Java中String ID的含义是什么?

use*_*347 3 java string

可能重复:
当我们有==运算符时为什么是equals()方法?

当我尝试用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);
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 8

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

在你的第一个例子,txt1并且txt2是两个变量指向同一个 String对象.所以他们==彼此相爱.

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


另外:写作几乎没有任何意义new String("string literal").如果你不明确地知道一个真正的,非常好的理由去做,不要.只有几个非常非常非常不寻常的情况,你可能会这样做,这与与低级别的东西进行交互有关.不是普通的可移植Java代码.

偶尔的理由来使用new String(String)(不是字符串字面,但你从别的地方得到的,就像一个实例substring).有关更多信息,请参阅此文章(感谢Rp-).