当我尝试用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)
字符串是对象.==比较对象引用,而不是字符串的内容.为此,请使用该String#equals方法.
在你的第一个例子,txt1并且txt2是两个变量指向同一个 String对象.所以他们==彼此相爱.
在你的第二个例子中,txt1并txt2指向两个不同的 String对象(具有相同的字符序列),因此它们不是==彼此.
另外:写作几乎没有任何意义new String("string literal").如果你不明确地知道一个真正的,非常好的理由去做,不要.只有几个非常非常非常不寻常的情况,你可能会这样做,这与与低级别的东西进行交互有关.不是普通的可移植Java代码.
有偶尔的理由来使用new String(String)(不是字符串字面,但你从别的地方得到的,就像一个实例substring).有关更多信息,请参阅此文章(感谢Rp-).
| 归档时间: |
|
| 查看次数: |
6922 次 |
| 最近记录: |