在https://docs.oracle.com/javase/tutorial/i18n/text/usage.html,我发现了这一点:
// recommended
System.out.printf("Character %c is invalid.%n", codePoint);
// not recommended
System.out.println("Character " + String.valueOf(char) + " is invalid.");
为什么一个建议,为什么不推荐?
更新
文档中提供的参数对我没有太大的意义,除了本地化之一:
以下方法很简单,并且避免了级联,即 并非所有语言都插入,使文本更难以本地化 数字值转换为与英语顺序相同的字符串。
答案 0 :(得分:1)
"Character " + String.valueOf(char) + " is invalid."
JVM将其转换为StringBuilder
。芽不要使用+表示IN IN LOOP。在这种情况下,每当您使用+时,都会创建NEW STRING并将其放入StringPool。
答案 1 :(得分:1)
System.out.printf("Character %c is invalid.%n", codePoint); //Recommended
建议使用上述方法,因为这样可以更轻松地实现字符串的本地化。 关于性能,不建议使用@ oleg.cherednik回答的方法。 这已经得到解答(更多详细信息,请点击此处)Is it better practice to use String.format over string Concatenation in Java?