生成消息的方法

时间:2019-06-15 11:13:14

标签: java string

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.");

为什么一个建议,为什么不推荐?

更新

文档中提供的参数对我没有太大的意义,除了本地化之一:

  

以下方法很简单,并且避免了级联,即   并非所有语言都插入,使文本更难以本地化   数字值转换为与英语顺序相同的字符串。

2 个答案:

答案 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?