java - Java中的字符串ID是什么意思?

标签 java string

<分区>

Possible Duplicate:
why equals() method when we have == operator?

当我尝试用 Java 执行代码时,它给了我 2 个不同的输出

String txt1="Hello";
String txt2="Hello";
System.out.println((boolean)txt1==txt2);

String txt1=new String("Hello");
String txt2=new String("Hello");
System.out.println((boolean)txt1==txt2);

最佳答案

字符串是对象。 == 比较对象引用,而不是字符串的内容。为此,请使用 String#equals 方法。

在您的第一个示例中,txt1txt2 是指向相同 String 对象的两个变量。所以他们是 == 彼此。

在您的第二个示例中,txt1txt2 指向两个不同 String 对象(它们具有相同的字符序列),因此它们不是 == 彼此。


另外:编写 new String("string literal") 几乎没有任何意义。如果您不明确知道这样做的真正非常好的理由,请不要这样做。只有一些非常、非常、非常不寻常的情况下你可能会这样做,这些情况与与低级别的东西交互有关。不是在正常的可移植 Java 代码中。

偶尔有理由使用new String(String)(不是字符串文字,而是从其他地方获得的实例,如 substring)。参见 this article有关更多信息(感谢 Rp-)。

关于java - Java中的字符串ID是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13232667/

相关文章:

C++,STL。从 vector<string> 中删除具体值?

java - 没有协议(protocol)错误,java,上传文件时

java - 声明 boolean 值优化

java - 尝试自动生成 id 时出现 SQL 异常

java - JAXB 构建不正确的 XML

java - 如何在另一个字符串中搜索字符串列表?

string - XSLT 中的整数到字符串转换

javascript - 搜索 javascript 字符串并获取单词索引而不是字符

string - 如何将字符串转换为字节数组并返回

java - 为什么 DAO 方法在 ORMLite 中这么慢?