Pertama, saya khawatir pertanyaan Anda mengandung sedikit kesalahan. Tidak ada metode writeline di konsol kelas. Sebaliknya konsol kelas menyediakan metode writer () yang mengembalikan PrintWriter. Penulis cetak ini memiliki println ().
Sekarang apa perbedaannya
System.console().writer().println("hello from console");
dan
System.out.println("hello system out");
Jika Anda menjalankan aplikasi Anda dari baris perintah, saya rasa tidak ada perbedaan. Tetapi jika konsol tidak tersedia System.console () mengembalikan null sementara System.out masih ada. Ini mungkin terjadi jika Anda menjalankan aplikasi dan melakukan pengalihan STDOUT ke file.
Berikut adalah contoh yang baru saja saya terapkan.
import java.io.Console;
public class TestConsole {
public static void main(String[] args) {
Console console = System.console();
System.out.println("console=" + console);
console.writer().println("hello from console");
}
}
Ketika saya menjalankan aplikasi dari command prompt saya mendapatkan yang berikut ini:
$ java TestConsole
console=java.io.Console@93dcd
hello from console
tetapi ketika saya mengarahkan STDOUT ke file ...
$ java TestConsole >/tmp/test
Exception in thread "main" java.lang.NullPointerException
at TestConsole.main(TestConsole.java:8)
Baris 8 adalah console.writer().println()
.
Berikut adalah isi dari / tmp / test
console=null
Saya harap penjelasan saya membantu.