2015-05-18 3 views
0

У меня вопрос, похожий на Is there a good reason to use "printf" instead of "print" in java?. Этот вопрос задает вопрос и дает ответ на вопрос о преимуществах использования System.out.print за System.out.printf. Мне интересно узнать о преимуществах использования 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? Есть ли заметная разница в эффективности памяти или времени?

ответ

1

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

Смежные вопросы