System.console () vs. System.out

1. Introduksjon

I denne opplæringen vil vi utforske forskjellene mellom System.console () og System.out.

2. System.console ()

La oss først lage et program for å hente Konsoll gjenstand:

ugyldig printConsoleObject () {Konsollkonsoll = System.console (); console.writer (). utskrift (console); }

Å kjøre dette programmet fra en interaktiv terminal vil sende noe sånt som [e-postbeskyttet]

Å kjøre det fra andre medier vil imidlertid kaste NullPointerException som konsollobjekt ville være null.

Eller hvis vi kjører programmet som nedenfor:

$ java ConsoleAndOut> test.txt

da vil programmet også kaste a NullPointerException mens vi omdirigerer strømmen.

De Konsoll klasse gir også metoder for å lese passord uten å ekko tegnet.

La oss se det i aksjon:

ugyldig readPasswordFromConsole () {Console console = System.console (); char [] password = console.readPassword ("Skriv inn passord:"); console.printf (String.valueOf (passord)); }

Dette vil be om passordet, og det ekko ikke tegnene mens vi skriver det.

3. System.out

La oss nå skrive ut objektet til System.out:

System.out.println (System.out);

Dette vil returnere noe sånt som java.io.PrintStream.

Produksjonen vil være den samme hvor som helst.

System.out brukes til å skrive ut data til utdatastrømmen, og det er ingen metoder for å lese data. Utgangsstrømmen kan omdirigeres til hvilken som helst destinasjon, for eksempel fil, og utdataene vil forbli den samme.

Vi kan kjøre programmet som:

$ java ConsoleAndOut> test.txt

Dette vil skrive utdataene til test.txt fil.

4. Forskjeller

Basert på eksemplene kan vi identifisere noen forskjeller:

  • System.console () returnerer a java.io. konsoll for eksempel når den kjøres fra en interaktiv terminal - derimot System.out vil returnere java.io.PrintStream objekt uavhengig av påkallingsmediet
  • Oppførselen til System.out og System.console () er lik hvis vi ikke har viderekoblet noen strømmer; ellers, System.console () returnerer null
  • Når flere tråder ber om inndata, deretter Konsoll køer opp disse instruksjonene pent - mens i tilfelle System.out alle instruksjonene vises samtidig

5. Konklusjon

Vi lærte i denne artikkelen om forskjellene mellom System.console () og System.out. Vi forklarte det Konsoll er nyttig når et program skal kjøre fra en interaktiv konsoll, men det har noen særegenheter som bør noteres og tas vare på.

Som alltid er den fullstendige koden for denne artikkelen tilgjengelig på GitHub.


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