public class Demo {
public static void main(String[] args) {
// TODO Auto-generated method stub
String s1 = "nba";
String s2 = new String("nba");
System.out.println(s1==s2);
String s3 = "你大爷";
String s4 ="你";
String s5 ="大爷";
System.out.println(s3==(s4+s5));
}
}
我的理解==是比较地址值的,
equals比较内容,
这段代码如果用equals返回的肯定是true
用==返回的2次都是false
这个我就不明白了,字符串的变量不都呆在字符常量池中吗,栈内存的变量的引用都指向此处,为什么说地址值不一样,为什么==返回false,不都在此取值么?地址为什么不一样呢,请用简单明了的句子,或者画图给我解个惑,谢谢
|
|