Спецификатор %n
Спецификатор %n используется в методах форматирования,
таких как printf, format и String.format,
для вставки символа переноса строки. В отличие от явного
символа \n, спецификатор %n автоматически
подставляет платформенно-зависимую последовательность
символов: на Windows это \r\n, а на Unix-подобных
системах (Linux, macOS) - \n. Это делает вывод
более переносимым между разными операционными системами.
Спецификатор не принимает дополнительных параметров
и не имеет индекса аргумента.
Синтаксис
System.out.printf("текст%n");
String.format("текст%n");
Пример
Давайте выведем две строки с помощью спецификатора %n:
public class Main
{
public static void main(String[] args)
{
System.out.printf("abcde%n");
System.out.printf("12345%n");
}
}
Результат выполнения кода:
"abcde"
"12345"
Пример
Давайте объединим спецификатор %n с другими
спецификаторами форматирования:
public class Main
{
public static void main(String[] args)
{
String res = String.format("Name: %s%nAge: %d%n", "abcde", 25);
System.out.print(res);
}
}
Результат выполнения кода:
"Name: abcde"
"Age: 25"
Пример
Давайте сравним поведение %n и \n.
Спецификатор %n зависит от платформы, а \n
всегда вставляет один символ перевода строки:
public class Main
{
public static void main(String[] args)
{
String platform = System.lineSeparator();
System.out.println("Line separator length: " + platform.length());
System.out.printf("With %%n: abcde%n");
System.out.printf("With \\n: abcde\n");
}
}
Результат выполнения кода (на Unix-подобной системе):
"Line separator length: 1"
"With %n: abcde"
"With \n: abcde"
Смотрите также
-
метод
printf,
который выполняет форматированный вывод -
метод
format,
который форматирует строку с подстановкой аргументов -
метод
lineSeparator,
который возвращает системный разделитель строк -
класс
Formatter,
который отвечает за форматирование строк