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

图1 java堆栈关系
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;
}

浙公网安备 33010602011771号