java - 字符串声明 - 两种不同的类型,哪个更好?

标签 java string declaration

<分区>

Possible Duplicates:
Java String declaration
Java Strings: “String s = new String(”silly“);”
What is the purpose of the expression “new String(…)” in Java?

有什么区别

String a = new String("SomeValue");

String a = "SomeValue";

有什么区别,哪个更好,为什么?

谢谢。

最佳答案

除非您有不寻常的、特定的需求和用例,否则请始终使用第二个版本,而不要使用新版本。

为回应@Ynwa 而编辑

如果您特别需要一个您知道是唯一的字符串,并且您将与 == 进行比较(这也是不常见的),则使用第一种情况。例如,如果你有一些字符串队列,你需要一个特定的字符串来表示“全部完成”。现在,可以想象,您可以使用 null 或一些奇怪的亚美尼亚字符字符串,但 null 可能对您的逻辑是合法的,如果您的软件最终在亚美尼亚被使用怎么办?干净的方法是

    public final static String TERMINATOR = new String("Terminator");  // actual text doesn't matter ... 
   // then, some loop taking from the Queue 
   while (keepGoing) {    
      String s = myQueue.take();    
      if (s == TERMINATOR) 
         keepGoing = false;    
     else   
       // normal processing of s 
   }

如果客户端将“终结者”放入队列,它将得到处理。所以你不阻止他们使用“终结者”。但是,如果客户端将 ThatQueueClass.TERMINATOR 放入队列,它将被关闭。

关于java - 字符串声明 - 两种不同的类型,哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8957577/

相关文章:

java - 字符串中的数字总和无法正常工作

java - 在 Google App Engine 上使用 HttpsURLConnection 检索证书详细信息

java - 使用 JSqlParser 查找 SQL 查询中标记的位置

java - 计算文件中与 String [ ] 中的单词匹配的单词数

vb.net - 如何永久存储字符串?应用程序关闭后?

java - 部分字符串匹配

javascript - ..if 语句中未声明的变量不会引发错误

java - 声明一个匿名类型的抽象变量?

java - JButton 加速器

c - 需要帮助在 C 中将结构传递给本地函数