lz可以这样理解: ==比较的是栈内存中的引用 是否相等,equals比较的是堆内存的引用对象的值 就像您的例子 我用//标志
String str1 = "Hello world"; //这里开辟一个堆内存空间
String str2 = new String("Hello world");//这里又开辟一个堆内存空间
System.out.println(str1 == str2);
// 打印出来的是 false //栈内存中str1和str2的值肯定是不同的,因为开辟了两个堆空间,栈内存中两个变量中存储的引用地址值不同.
System.out.println(str1.equals(str2));
//打印出来的是true //这里是因为equals比较的是堆内存中引用对象的值,故打印出来时true
望对您有所帮助,若我的回答有误,请回复我哈,大家共同学习,哈~ |