当前位置 博文首页 > JustinQin:Java--equals、==使用区别
1、equals()是方法,==是比较运算符;
2、比较基本数据类型时,只能用==,比较的是值是否相等;
3、比较引用数据类型时,==比较的是引用地址是否相等,equals()则根据对象是否重写Object中的equals(),判断是equals比较引用地址还是equals比较内容。
对象没有对Object类中equals()方法进行重写,则比较的是引用地址,因为所有引用数据类型均继承自Object类,而Object的equals方法返回的是==比较结果即引用地址比较结果。
Object类equals()方法源码
对象对Object类中的equals()方法进行了重写,则返回的是比较对象的内容是否相等。
String类equals()方法源码
<<<PS:Java中基本数据类型和引用数据类型区别
<<<附:equals和==区别常见笔试
#例1 String s1 = "abc"; String s2 = s1; String s3 = new String("abc") ; String s4= new String("abc") ; ? System out.println(s1==s2); System out.println(s1.equals(s2)); System out.println(s1==s3); System out.println(s3.equals(s4)); System out.println(s3==s4); 输出答案: true true false true false ? 结果说明:不同对象的引用地址不同,==比较的是对象的引用地址,equals()默认比较的也是对象的引用地址,重写equals后比较的是对象的内容。 ? |
#例2 String s1 = "a" + "b"; String s2 = "ab"; System out.println(s1==s2) 输出答案: true ? ? 结果说明:两个或多个字符串常量相加,预编译的时候,“+”号会被优化,多个字符串自动会合成一个字符串常量,两个字符串常量对象的引用地址相同; ? |
?
cs