System.console () u odnosu na System.out

1. Uvod

U ovom uputstvu istražit ćemo razlike između System.console () i System.out.

2. System.console ()

Napravimo najprije program za preuzimanje Konzola objekt:

void printConsoleObject () {Konzola konzole = System.console (); console.writer (). print (console); }

Pokretanje ovog programa s interaktivnog terminala rezultirat će nečim sličnim [e-pošta zaštićena]

Međutim, trčanje iz drugih medija bacit će NullPointerException kao što bi bio objekt konzole null.

Ili ako pokrenemo program kao u nastavku:

$ java ConsoleAndOut> test.txt

tada će program također baciti a NullPointerException dok preusmjeravamo tok.

The Konzola class također nudi metode za čitanje lozinki bez ponavljanja znaka.

Da vidimo to na djelu:

void readPasswordFromConsole () {Konzola konzole = System.console (); char [] lozinka = console.readPassword ("Unesite lozinku:"); console.printf (String.valueOf (lozinka)); }

Ovo će zatražiti lozinku i neće odjeknuti znakovi dok je tipkamo.

3. System.out

Otisnimo sada objekt od System.out:

System.out.println (System.out);

Ovo će vratiti nešto poput java.io.PrintStream.

Izlaz će biti isti s bilo kojeg mjesta.

System.out koristi se za ispis podataka u izlazni tok i ne postoje metode za čitanje podataka. Izlazni tok može se preusmjeriti na bilo koje odredište poput datoteke, a izlaz će ostati isti.

Program možemo pokrenuti kao:

$ java ConsoleAndOut> test.txt

Ovo će ispisati izlaz na test.txt datoteka.

4. Razlike

Na temelju primjera možemo prepoznati neke razlike:

  • System.console () vraća a java.io.Konsole primjerice kada se pokreće s interaktivnog terminala - s druge strane System.out će se vratiti java.io.PrintStream objekt bez obzira na prizivni medij
  • Ponašanje System.out i System.console () slično je ako nismo preusmjerili nijedan tok; inače, System.console () vraća se null
  • Kada više niti zatraži unos, tada se Konzola lijepo stavlja u red te upute - dok u slučaju System.out sve se upute pojavljuju istovremeno

5. Zaključak

U ovom smo članku saznali o razlikama između System.console () i System.out. Objasnili smo to Konzola je korisno kada bi se aplikacija trebala izvoditi s interaktivne konzole, ali ima nekih hirovitosti koje treba primijetiti i paziti na njih.

Kao i uvijek, cjeloviti kôd za ovaj članak dostupan je na GitHubu.


$config[zx-auto] not found$config[zx-overlay] not found