В чем именно заключается техническая разница между console.writeline
и System.out.println
? Я знаю, что это System.out.println
пишет на стандартный вывод, но разве это не то же самое, что консоль?
Я не совсем понимаю документацию для console.writeline
.
Ответы:
Вот основные различия между использованием
System.out
/.err
/.in
иSystem.console()
:System.console()
возвращает null, если ваше приложение не запущено в терминале ( хотя вы можете справиться с этим в своем приложении )System.console()
предоставляет методы для чтения пароля без повторения символовSystem.out
иSystem.err
использовать кодировку платформы по умолчанию, в то время какConsole
методы вывода класса используют кодировку консолиПоследнее поведение может быть не сразу очевидным, но такой код может продемонстрировать разницу:
В моей Windows XP, имеющей системную кодировку windows-1252 и кодировку консоли по умолчанию IBM850, этот код будет писать:
Обратите внимание, что это поведение зависит от кодировки консоли, установленной на кодировку, отличную от кодировки системы. Это поведение по умолчанию в Windows по ряду исторических причин.
источник
По сути, они одинаковы, если ваша программа запускается из интерактивного приглашения и вы не перенаправили stdin или stdout:
приводит к:
Причина в
Console
том, чтобы предоставить функции, которые полезны в конкретном случае, когда вы запускаете из интерактивной командной строки:Console
аккуратно ставить их в очередь, тогда как если бы вы использовали System.in/out, тогда все запросы появлялись бы одновременно).Обратите внимание, что перенаправление даже одного из потоков приводит к
System.console()
возвратуnull
; еще одно раздражение заключается в том, что часто нетConsole
доступных объектов при порождении из другой программы, такой как Eclipse или Maven.источник
Во-первых, боюсь, в вашем вопросе есть небольшая ошибка. В классе Console нет строки записи метода. Вместо этого класс Console предоставляет метод writer (), который возвращает PrintWriter. Этот писатель печати имеет println ().
В чем разница между
и
Если вы запустите приложение из командной строки, думаю, нет никакой разницы. Но если консоль недоступна, System.console () возвращает null, а System.out все еще существует. Это может произойти, если вы запустите свое приложение и выполните перенаправление STDOUT в файл.
Вот пример, который я только что реализовал.
Когда я запустил приложение из командной строки, я получил следующее:
но когда я перенаправил STDOUT в файл ...
Строка 8 есть
console.writer().println()
.Вот содержимое / tmp / test
Надеюсь, мои объяснения помогут.
источник
В
Console.writeline
Java нет. Это в .NET.Консоль и стандартный выход - это не одно и то же. Если вы читаете страницу Javadoc вы упомянули , вы увидите , что приложение может иметь доступ к консоли , только если он вызывается из командной строки , а выход не перенаправлен , как это
Другие подобные случаи описаны в ответе SimonJ, хотя он упустил момент, которого нет
Console.writeline
.источник