Java--equals、==使用区别
主要区别
1、equals()是方法,==是比较运算符;
2、比较基本数据类型时,只能用==,比较的是值是否相等;
3、比较引用数据类型时,==比较的是引用地址是否相等,equals()则根据对象是否重写Object中的equals(),判断是equals比较引用地址还是equals比较内容。
equals比较引用地址
对象没有对Object类中equals()方法进行重写,则比较的是引用地址,因为所有引用数据类型均继承自Object类,而Object的equals方法返回的是==比较结果即引用地址比较结果。
Object类equals()方法源码
equals比较内容
对象对Object类中的equals()方法进行了重写,则返回的是比较对象的内容是否相等。
String类equals()方法源码
<<<附: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
结果说明:两个或多个字符串常量相加,预编译的时候,“+”号会被优化,多个字符串自动会合成一个字符串常量,两个字符串常量对象的引用地址相同;
|
文章来源: blog.csdn.net,作者:吾日三省贾斯汀,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/JustinQin/article/details/90510192
- 点赞
- 收藏
- 关注作者
评论(0)