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 
     
 
望对您有所帮助,若我的回答有误,请回复我哈,大家共同学习,哈~ |