System.console () vs. System.out

1. Bemutatkozás

Ebben az oktatóanyagban megvizsgáljuk a különbségeket System.console () és System.out.

2. System.console ()

Először hozzunk létre egy programot a Konzol tárgy:

void printConsoleObject () {Console console = System.console (); konzol.író (). nyomtatás (konzol); }

Ha ezt a programot interaktív terminálról futtatja, akkor valami hasonló lesz [e-mail védett]

Más médiumokból történő futtatása azonban dobni fog NullPointerException amilyen a konzol lenne nulla.

Vagy ha az alábbiak szerint futtatjuk a programot:

$ java ConsoleAndOut> test.txt

akkor a program is dob egy NullPointerException miközben átirányítjuk a patakot.

A Konzol osztály a jelszavak elolvasására szolgáló módszereket is kínál a karakter visszhangja nélkül.

Lássuk ezt működés közben:

void readPasswordFromConsole () {Konzol konzol = System.console (); char [] password = console.readPassword ("Írja be a jelszót:"); console.printf (String.valueOf (jelszó)); }

Ez megkéri a jelszót, és nem fogja visszhangozni a karaktereket, amíg beírjuk.

3. System.out

Most nyomtassuk ki az objektumot System.out:

System.out.println (System.out);

Ez valami ilyesmit ad vissza java.io.PrintStream.

A kimenet bárhonnan azonos lesz.

System.out adatok nyomtatására szolgál a kimeneti adatfolyamba, és nincsenek módszerek az adatok olvasására. A kimeneti adatfolyam átirányítható bármilyen rendeltetési helyre, például fájlba, és a kimenet ugyanaz marad.

A programot a következő módon futtathatjuk:

$ java ConsoleAndOut> test.txt

Ez kinyomtatja a kimenetet a test.txt fájl.

4. Különbségek

A példák alapján néhány különbséget tudunk azonosítani:

  • System.console () visszatér a java.io.Console például ha interaktív terminálról futtatják - másrészt System.out vissza fog térni java.io.PrintStream objektum, függetlenül az invokációs közegtől
  • - viselkedése System.out és System.console () hasonló, ha nem irányítottunk át egyetlen adatfolyamot sem; másképp, System.console () visszatér nulla
  • Amikor több szál kéri a bevitelt, akkor a Konzol ezek az utasítások szépen sorban állnak - míg System.out az összes kérdés egyszerre jelenik meg

5. Következtetés

Ebben a cikkben megtudtuk a különbségeket System.console () és System.out. Ezt elmagyaráztuk Konzol akkor hasznos, ha egy alkalmazásnak interaktív konzolról kell futtatnia, de van benne néhány furcsasága, amelyeket figyelembe kell venni és gondozni kell.

Mint mindig, a cikk teljes kódja elérhető a GitHubon.