System.console () vs. System.out

1. Introduktion

I denne vejledning undersøger vi forskellene mellem System.console () og System.out.

2. System.console ()

Lad os først oprette et program for at hente Konsol objekt:

ugyldig printConsoleObject () {Konsolkonsol = System.konsol (); console.writer (). udskriv (console); }

At køre dette program fra en interaktiv terminal vil output noget lignende [e-mail beskyttet]

Imidlertid kører det fra andre medier NullPointerException som konsolobjekt ville være nul.

Eller hvis vi kører programmet som nedenfor:

$ java ConsoleAndOut> test.txt

så kaster programmet også en NullPointerException når vi omdirigerer strømmen.

Det Konsol klasse giver også metoder til at læse adgangskoder uden at ekko tegnet.

Lad os se det i aktion:

ugyldigt readPasswordFromConsole () {Console console = System.console (); char [] password = console.readPassword ("Indtast adgangskode:"); console.printf (String.valueOf (adgangskode)); }

Dette beder om adgangskoden, og det ekko ikke tegnene, mens vi skriver det.

3. System.out

Lad os nu udskrive objektet af System.out:

System.out.println (System.out);

Dette vil returnere noget lignende java.io.PrintStream.

Outputtet vil være det samme hvor som helst.

System.out bruges til at udskrive data til outputstrømmen, og der er ingen metoder til at læse data. Outputstrømmen kan omdirigeres til enhver destination, såsom fil, og output forbliver den samme.

Vi kan køre programmet som:

$ java ConsoleAndOut> test.txt

Dette udskriver output til test.txt fil.

4. Forskelle

Baseret på eksemplerne kan vi identificere nogle forskelle:

  • System.console () returnerer a java.io. konsol eksempel når den køres fra en interaktiv terminal - på den anden side System.out kommer tilbage java.io.PrintStream objekt uanset påkaldsmediet
  • Opførelsen af System.out og System.console () ligner, hvis vi ikke har omdirigeret nogen streams; Ellers, System.console () vender tilbage nul
  • Når flere tråde beder om input, derefter Konsol køer disse opfordringer pænt - mens i tilfælde af System.out alle meddelelser vises samtidigt

5. Konklusion

Vi lærte i denne artikel om forskellene mellem System.console () og System.out. Vi forklarede det Konsol er nyttigt, når et program skal køre fra en interaktiv konsol, men det har nogle særheder, som skal bemærkes og behandles.

Som altid er den komplette kode til denne artikel tilgængelig på GitHub.


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