java中==和equals()的区别

“==”的含义:

1.如果比较的是基本类型,则比较他们的值。

2.如果比较的是引用类型,则比较他们的存储地址(就是图1的栈中的存储地址)。

 

图1 java堆栈关系

“equals()”的含义:

equals()是Object的方法,比较的是存储地址,跟“==”一样,但String重写之后比较的是对象的值(就是图1中存在常量池里面的内容或栈中的局部变量)。

例:

public class TestEquals {
  public static void main(String[] args) {
      String s1="hello";
      String s3="hello";
      String s2=new String("hello");
      //==的比较
      System.out.println(s1==s3); //true
      System.out.println(s1==s2); //false
      //equals的比较
      //重写后的比较
      System.out.println(s2.equals(s1)); //true
      //没有重写的比较,是比较地址
      User user=new User();
      User user1=new User();
      User user2=user1;
      System.out.println(user.equals(user1)); //false
      System.out.println(user1.equals(user2)); //true
  }
}
class User{
  private String name;
}
 

 

posted @ 2022-06-17 14:53  liwinallucky  阅读(35)  评论(0)    收藏  举报