【问题标题】:Generating Messages approaches生成消息方法
【发布时间】:2019-10-29 18:42:00
【问题描述】:

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

为什么一个推荐而另一个不推荐?

更新

文档提供的参数对我来说除了本地化之外没有多大意义:

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

【问题讨论】:

  • 正如它所说,它“难以本地化”。 (除了第二个例子甚至不会编译,因为char 是一个类型名称,不能是一个变量。我建议你寻找一些更好和更新的学习资源。仅仅因为Oracle 购买了Java 没有'这意味着他们的网站是了解它的好地方

标签: java string


【解决方案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?

【讨论】:

    【解决方案2】:
    "Character " + String.valueOf(char) + " is invalid."
    

    JVM 将其转换为StringBuilder。 Bud 请勿在字符串 IN LOOP 中使用 +。在这种情况下,每次使用 + 时,都会创建 NEW STRING 并将其放入 StringPool 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-08
      • 2011-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-15
      • 2013-06-30
      • 1970-01-01
      相关资源
      最近更新 更多