Я читаю Effective Java и использует символ %n
для символа новой строки везде. Я использовал \n
довольно успешно для новой строки в Java-программах.
Какой из них "правильный"? Что случилось с \n
? Почему Java изменила это соглашение C?
Я читаю Effective Java и использует символ %n
для символа новой строки везде. Я использовал \n
довольно успешно для новой строки в Java-программах.
Какой из них "правильный"? Что случилось с \n
? Почему Java изменила это соглашение C?
Из быстрого google:
Существует также один спецификатор, который не соответствует аргументу. Это "% n", который выводит разрыв строки. В некоторых случаях также можно использовать "\n", но поскольку "% n" всегда выводит правильный разделитель строк на платформе, он переносится по платформам, тогда как "\n" не является.
Пожалуйста, обратитесь https://docs.oracle.com/javase/tutorial/java/data/numberformat.html
%n
переносится по платформам
\n
нет.
См. синтаксис строки форматирования в справочной документации:
'n' разделитель строк. Результатом является разделитель строк на платформе
Хотя \n
является правильным символом новой строки для систем на основе Unix, другие системы могут использовать разные символы для представления конца строки. В частности, система Windows использует \r\n
, а ранние системы MacOS используют \r
.
Используя %n
в вашей строке формата, вы скажете Java использовать значение, возвращаемое System.getProperty("line.separator")
, которое является разделителем строк для текущей системы.
Предупреждение: если вы используете код NETWORKING, вы можете предпочесть определенность \n, в отличие от% n, которая может отправлять разные символы по сети, в зависимости от того, на какой платформе она работает.
"Правильно" зависит от того, что именно вы пытаетесь сделать.
\n всегда даст вам окончание строки "unix style". \ r\n всегда будет давать вам строку "dos style". % n даст вам строку, заканчивающуюся для платформы, на которой вы работаете
C обрабатывает это по-другому. Вы можете открыть файл в режиме "текст" или "двоичный". Если вы откроете файл в двоичном режиме, \n даст вам окончание строки "unix style", а "\ r\n" даст вам строку "dos style". Если вы откроете файл в "текстовом" режиме в системе dos/windows, тогда, когда вы пишете \n, код обработки файлов преобразует его в \r\n. Таким образом, открыв файл в текстовом режиме и используя \n, вы получите окончательную строку конкретной платформы.
Я могу понять, почему дизайнеры java не захотели реплицировать C-взломанные идеи относительно "текстовых" и "двоичных" файловых режимов.
В java, \n
всегда генерирует символ tfc tfc. Чтобы получить правильный разделитель строк для конкретной платформы, используйте %n
.
Так что используйте \n
, если вы уверены, что вам нужен символ tfc t1, например, в сети.
Во всех остальных ситуациях используйте %n
Обратите внимание, что эти ответы действительны только при использовании объектов System.out.printf()
или System.out.format()
или Formatter
. Если вы используете %n
в System.out.println()
, он просто произведет %n
, а не новую строку.
% n - это разделитель строк, который переносится через операционные системы. Однако он не может использоваться в качестве аргумента для функций System.out.print или System.out.println.
Рекомендуется использовать эту новую версию разделителя строк выше\n.