В чем преимущество использования System.out.print по сравнению с System.out.printf?

У меня есть вопрос, похожий на Есть ли веская причина использовать printf вместо print в java?. Этот вопрос задает и дает ответ о преимуществах использования System.out.print по сравнению с System.out.printf. Мне любопытны преимущества использования System.out.print вместо System.out.printf в первую очередь.

По моему опыту, я вижу, что System.out.print используется намного чаще, чем System.out.printf.

С System.out.printf это более читабельно при форматировании чисел. У вас все еще есть синтаксический сахар объединения строк с +, как показано во втором System.out. System.out.printf также возвращает PrintStream на случай, если вы захотите с ним что-то сделать.

Примеры:

int hour = 6;
int minutes = 5;
int seconds = 4;
System.out.printf("Time: %d:%02d:%02d", hour, minutes, seconds);
System.out.printf("Time: " + hour + ":%02d:%02d", minutes, seconds);
System.out.print("Time: " + hour + ":" + String.format("%02d", minutes) + ":" + String.format("%02d", seconds));
//Output for each line:  Time: 6:05:04

System.out.printf("Print something!");
System.out.print("Print something!");
//Output for each line:  "Print something!"

System.out.printf("End a line\n");
System.out.println("End a line");
//Output for each line:  End a line [followed by a line break]

String x = "a variable";
System.out.printf("Add %s", x);
System.out.printf("Add " + x);
System.out.print("Add " + x);
//Output for each line:  Add a variable

Итак, помимо (я думаю) большинства Java-программистов, использующих System.out.print, в чем его преимущество перед System.out.printf? Есть ли заметная разница в эффективности памяти или времени?


person Evorlor    schedule 18.05.2015    source источник


Ответы (1)


print с конкатенацией строк будет немного эффективнее, чем printf. С print вы, разработчик, определяете во время компиляции, где значения должны быть вставлены в строку, но с printf вы просите JRE проанализировать вашу строку формата и вставить значения во время выполнения. Если вы не печатаете большой объем, это, вероятно, будет незначительной разницей, поэтому вам следует использовать то, что проще всего поддерживать.

person Brett Kail    schedule 18.05.2015