Есть ли веская причина использовать «printf» вместо «print» в java? - PullRequest
18 голосов
/ 14 февраля 2009

У меня не было возможности пройти серьезные школьные курсы программирования низкого уровня. (Я знаю, что я действительно должен начать изучать «закулисные», чтобы стать лучшим программистом.) Я ценю удобство Java, включая способность вставлять что-либо в оператор System.out.print. Однако есть ли причина, по которой вы хотели бы использовать System.out.printf вместо этого?

Кроме того, следует ли мне избегать таких вызовов при печати в «реальных приложениях»? Вероятно, лучше печатать сообщения на дисплее клиента, используя какую-то функцию пользовательского интерфейса, верно?

Ответы [ 4 ]

28 голосов
/ 14 февраля 2009

Метод printf класса PrintStream обеспечивает форматирование строки , аналогичное функции printf в C.

Форматирование для printf использует синтаксис форматирования Formatter class '.

Метод printf может быть особенно полезен при отображении нескольких переменных в одной строке, что было бы утомительно при использовании конкатенации строк:

int a = 10;
int b = 20;

// Tedious string concatenation.
System.out.println("a: " + a + " b: " + b);

// Output using string formatting.
System.out.printf("a: %d b: %d\n", a, b);

Кроме того, написание Java-приложений не обязательно означает написание GUI-приложений, поэтому при написании консольных приложений можно использовать print, println, printf и другие функции, которые будут выводить System.out.

3 голосов
/ 14 февраля 2009

Как правило, в «реальном» приложении вы пишете в систему ведения журналов, такую ​​как java.util.Logging или регистрация общего достояния, которые имеют возможность регистрировать различные уровни детализации (например, режим «отладки», который будет отключен в производственная среда). Однако для быстрой и грязной временной отладки иногда System.out.println () - это самый простой способ сделать что-либо (при условии, что ваша среда выполнения выдает стандартный вывод куда-то, где вы можете его прочитать).

Я должен также упомянуть, что вы всегда можете использовать «String.format ()» для создания строки с использованием списка аргументов формата и переменных (затем передать эту строку в метод ведения журнала или System.out.println). Это часто лучше, чем объединять кучу переменных в строку.

2 голосов
/ 14 февраля 2009

Если в большинстве реальных программ используется логирование. Отладочные сообщения могут быть включены / выключены с помощью конфигурации регистрации. См. Log4j в качестве примера.

2 голосов
/ 14 февраля 2009

Лучше, если вам нужно контролировать точность чисел с плавающей запятой, выполнять заполнение и т. Д. System.out.print может распечатывать все виды материалов, но вы не можете выполнить точный контроль точности и заполнения с помощью это.

...