和equals的区别
比较两个对象在内存里是不是同一个对象,就是说在内存里的存储位置是不是一致。两个String对象存储值是一样,但可能存储在不同地方。
equals比较的是内容(String的equals的方法,重写了):
注意:equals底层实现调用的是“”,但是***String***g的equals的方法,重写了,比较的是内容 。
在***Object类***源码(如下所示)中,其底层是使用了“”来实现,也就是说通过比较两个对象的内存地址是否相同判断是否是同一个对象。
public boolean equals(Object obj) {
return (this == obj);
}
示例代码:
public class EqualsTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
String s1 ="abc";
String s2 =s1;
String s5 ="abc";
String s3 =new String("abc");
String s4 =new String("abc");
System.out.println("s1==s5 comparision :"+(s1==s5));
System.out.println("s1==s2 comparision :"+(s1==s2));
System.out.println("s3==s4 comparision :"+(s3==s4));
System.out.println("s1==s4 comparision :"+(s1==s4));
System.out.println("s1.equals(s2) :"+(s1.equals(s2)));
System.out.println("s1.equals(s5) :"+(s1.equals(s5)));
System.out.println("s3.equals(s4) :"+(s3.equals(s4)));
System.out.println("s1.equals(s4) :"+(s1.equals(s4)));
}
}
输出结果为:
s1= =s5 comparision :true
s1= =s2 comparision :true
s3= =s4 comparision :false
s1= =s4 comparision :false
s1.equals(s2) :true
s1.equals(s5) :true
s3.equals(s4) :true
s1.equals(s4) :true