为什么结果是错误的? 有人可以解释吗?字符串串联和比较使用==
public class StringTest1 {
public static void main(String[] args) {
String a="a";
String b=a+"b";
String c="ab";
System.out.println(b==c);
}
}
为什么结果是错误的? 有人可以解释吗?字符串串联和比较使用==
public class StringTest1 {
public static void main(String[] args) {
String a="a";
String b=a+"b";
String c="ab";
System.out.println(b==c);
}
}
因为它们不指向内存中的同一个对象。
==
用于比较基本类型或对象引用。
你想要做什么,是比较它们的值,为此您将需要使用equals(Object o)
或equalsIgnoreCase(Object o)
方法(S)
这种比较的输出是
FALSE
因为你已经创建了两个 在堆中具有不同位置的对象,因此==
比较它们的 引用或地址位置并返回false。
'串了'是一个字符串的引用,所以当你做'b == C'你比较字符串引用和这些引用是不一样的,即使引用的对象包含相同的数据。 –
感谢您的回复。 – Monika
这是一个使用Java的相关常见问题我推荐你阅读http://stackoverflow.com/questions/1700081/why-does-128-128-return-false-but-127-127-return-true-in-此代码 –