Scrittura dell'Output sulla Console in Java
- Per scrivere output sulla console in Java, si possono utilizzare i metodi
print()
eprintln()
della classePrintStream
, che è accessibile tramiteSystem.out
. - Un'alternativa più flessibile è la classe
PrintWriter
, che consente di scrivere output formattato e supporta lo svuotamento automatico dello stream. - Utilizzare
PrintWriter
è consigliato per applicazioni del mondo reale, poiché facilita l'internazionalizzazione del programma. - La classe
PrintStream
implementa il metodowrite()
, che può essere utilizzato per scrivere byte direttamente sulla console, ma è meno comune rispetto all'uso diprint()
eprintln()
.
Scrittura su Console
L'output della console si ottiene più facilmente con print()
e println()
, descritti in precedenza, che vengono utilizzati nella maggior parte degli esempi in questa guida.
Questi metodi sono definiti dalla classe PrintStream
(che è il tipo di oggetto referenziato da System.out
). Anche se System.out
è un byte stream, utilizzarlo per l'output semplice del programma è ancora accettabile.
Tuttavia, esiste un'alternativa basata sui caratteri che studieremo in questa lezione.
Poiché PrintStream
è un output stream derivato da OutputStream
, implementa anche il metodo di basso livello write()
. Quindi, write()
può essere utilizzato per scrivere sulla console.
La forma più semplice di write()
definita da PrintStream
è mostrata qui:
void write(int byte_value)
Questo metodo scrive il byte specificato da byte_value
sullo stream.
Anche se byte_value
è dichiarato come un intero, vengono scritti solo gli otto bit meno significativi.
Ecco un breve esempio che utilizza write()
per produrre in output il carattere "A
" seguito da un ritorno a capo sullo schermo:
// Dimostra System.out.write()
class DemoScrittura {
public static void main(String[] args) {
int b;
b = 'A';
System.out.write(b);
System.out.write('\n');
}
}
Non utilizzeremo spesso write()
per scrivere output su console (anche se farlo potrebbe essere utile in alcune situazioni) perché print()
e println()
sono sostanzialmente più facili da usare.
La Classe PrintWriter
Sebbene utilizzare System.out
per scrivere sulla console sia accettabile, il suo uso è probabilmente migliore per scopi di debug o per programmi di esempio, come quelli che si trovano in questa guida.
Per programmi del mondo reale, il metodo raccomandato per scrivere sulla console quando si usa Java è attraverso uno stream PrintWriter
. PrintWriter
è una delle classi basate sui caratteri. Utilizzare una classe basata sui caratteri per l'output della console rende più facile l'internazionalizzazione del programma.
PrintWriter
definisce diversi costruttori. Quello che utilizzeremo è mostrato qui:
PrintWriter(OutputStream outputStream, boolean flushingOn)
Qui, outputStream
è un oggetto di tipo OutputStream
, e flushingOn
controlla se Java svuota lo stream di output ogni volta che viene chiamato un metodo println()
(tra gli altri). Se flushingOn
è true
, lo svuotamento avviene automaticamente. Se false
, lo svuotamento non è automatico.
PrintWriter
supporta i metodi print()
e println()
. Pertanto, è possibile utilizzare questi metodi nello stesso modo in cui li si utilizzava con System.out
. Se un argomento non è un tipo semplice, i metodi PrintWriter
chiamano il metodo toString()
dell'oggetto e poi visualizzano il risultato.
Per scrivere sulla console utilizzando un PrintWriter
, bisogna specificare System.out
per lo stream di output e lo svuotamento automatico. Ad esempio, questa riga di codice crea un PrintWriter
che è collegato all'output della console:
PrintWriter pw = new PrintWriter(System.out, true);
La seguente applicazione illustra l'utilizzo di un PrintWriter
per gestire l'output della console:
// Dimostrare PrintWriter
import java.io.*;
public class DemoPrintWriter {
public static void main(String[] args) {
PrintWriter pw = new PrintWriter(System.out, true);
pw.println("Questa è una stringa");
int i = -7;
pw.println(i);
double d = 4.5e-7;
pw.println(d);
}
}
L'output di questo programma è mostrato qui:
Questa è una stringa
-7
4.5E-7
Una cosa importante da ricordare è che non c'è niente di sbagliato nell'utilizzare System.out
per scrivere semplice output di testo sulla console quando si sta imparando Java o facendo debug dei programmi.
Tuttavia, utilizzare PrintWriter
rende le applicazioni del mondo reale più facili da internazionalizzare. Poiché non si ottiene alcun vantaggio utilizzando un PrintWriter
nei programmi di esempio mostrati in questa guida, continueremo a utilizzare System.out
per scrivere sulla console.