Я читаю Ефективну Java, і вона використовується %n
для символів нового рядка скрізь. Я \n
досить успішно використовував новий рядок у програмах Java.
Який «правильний»? Що не так \n
? Чому Java змінила цю умову C?
Я читаю Ефективну 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 завжди надасть вам закінчення рядка "стиль унікс". \ r \ n завжди надасть вам закінчення рядка "стиль dos". % n дасть вам закінчення рядка для платформи, на якій ви працюєте
C справляється з цим по-різному. Ви можете відкрити файл у режимі "текст" або "двійковий". Якщо ви відкриєте файл у двійковому режимі \ n, ви отримаєте закінчення рядка "стиль унікс", а "\ r \ n" дасть вам закінчення рядка "стиль стилю". Якщо ви відкриєте файл у текстовому режимі в системі dos / windows, тоді, коли ви пишете \ n, код обробки файлів перетворює його на \ r \ n. Отже, відкриваючи файл у текстовому режимі та використовуючи \ n, ви закінчуєте певний рядок платформи.
Я можу зрозуміти, чому дизайнери Java не хотіли повторювати хиткі ідеї C щодо режимів "текст" та "бінарний файл".
У Java \n
завжди генерують \u000A
характер передачі ліній. Щоб отримати правильний роздільник ліній для конкретної платформи %n
.
Тому використовуйте, \n
коли ви впевнені, що вам потрібен \u000A
символ передачі ліній, наприклад, у мережі.
У всіх інших ситуаціях використовувати%n
Зверніть увагу на ці відповіді вірні лише при використанні System.out.printf()
або System.out.format()
або на Formatter
об'єкт. Якщо ви використовуєте %n
в System.out.println()
, він буде просто робити %n
, а не символ нового рядка.
Специфікатор формату% n - це роздільник рядків, портативний для операційних систем. Однак він не може бути використаний як аргумент для System.out.print або System.out.println.
Завжди рекомендується використовувати цю нову версію роздільника рядків вище \ n.