Apa sebenarnya perbedaan teknis antara console.writeline
dan System.out.println
? Saya tahu bahwa System.out.println
menulis ke keluaran standar tetapi apakah ini tidak sama dengan konsol?
Saya tidak sepenuhnya memahami dokumentasi untuk console.writeline
.
Jawaban:
Berikut adalah perbedaan utama antara menggunakan
System.out
/.err
/.in
danSystem.console()
:System.console()
mengembalikan null jika aplikasi Anda tidak dijalankan di terminal ( meskipun Anda dapat menangani ini di aplikasi Anda )System.console()
menyediakan metode untuk membaca kata sandi tanpa menggemakan karakterSystem.out
danSystem.err
menggunakan encoding platform default, sedangkanConsole
metode keluaran kelas menggunakan encoding konsolPerilaku terakhir ini mungkin tidak langsung terlihat, tetapi kode seperti ini dapat menunjukkan perbedaannya:
Di Windows XP saya yang memiliki pengkodean sistem windows-1252 dan pengkodean konsol default IBM850, kode ini akan menulis:
Perhatikan bahwa perilaku ini bergantung pada encoding konsol yang disetel ke encoding berbeda ke encoding sistem. Ini adalah perilaku default di Windows karena banyak alasan historis.
sumber
Mereka pada dasarnya sama, jika program Anda dijalankan dari prompt interaktif dan Anda belum mengarahkan stdin atau stdout:
menghasilkan:
Alasannya
Console
adalah untuk menyediakan fitur yang berguna dalam kasus tertentu yang Anda jalankan dari baris perintah interaktif:Console
akan mengantrekannya dengan baik, sedangkan jika Anda menggunakan System.in/out maka semua petunjuk akan muncul secara bersamaan).Perhatikan di atas bahwa pengalihan bahkan salah satu aliran akan menghasilkan
System.console()
pengembaliannull
; Masalah lainnya adalah seringkali tidak adaConsole
objek yang tersedia saat muncul dari program lain seperti Eclipse atau Maven.sumber
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
dan
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.
Ketika saya menjalankan aplikasi dari command prompt saya mendapatkan yang berikut ini:
tetapi ketika saya mengarahkan STDOUT ke file ...
Baris 8 adalah
console.writer().println()
.Berikut adalah isi dari / tmp / test
Saya harap penjelasan saya membantu.
sumber
Tidak ada
Console.writeline
di Jawa. Ada di .NET.Konsol dan standar tidak sama. Jika Anda membaca halaman Javadoc yang Anda sebutkan , Anda akan melihat bahwa aplikasi dapat memiliki akses ke konsol hanya jika dipanggil dari baris perintah dan keluarannya tidak diarahkan seperti ini
Kasus lain seperti itu tercakup dalam jawaban SimonJ, meskipun dia melewatkan poin bahwa tidak ada
Console.writeline
.sumber