Java--equals、==使用区别

举报
吾日三省贾斯汀 发表于 2021/09/09 23:02:51 2021/09/09
【摘要】 主要区别 1、equals()是方法,==是比较运算符; 2、比较基本数据类型时,只能用==,比较的是值是否相等; 3、比较引用数据类型时,==比较的是引用地址是否相等,equals()则根据对象是否重写Object中的equals(),判断是equals比较引用地址还是equals比较内容。 equals比较引用地址 对象没...

主要区别

1、equals()是方法,==是比较运算符;

2、比较基本数据类型时,只能用==,比较的是值是否相等;

3、比较引用数据类型时,==比较的是引用地址是否相等,equals()则根据对象是否重写Object中的equals(),判断是equals比较引用地址还是equals比较内容

equals比较引用地址

对象没有对Object类中equals()方法进行重写,则比较的是引用地址,因为所有引用数据类型均继承自Object类,而Object的equals方法返回的是==比较结果即引用地址比较结果。

Object类equals()方法源码

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

 

 

结果说明:两个或多个字符串常量相加,预编译的时候,“+”号会被优化,多个字符串自动会合成一个字符串常量,两个字符串常量对象的引用地址相同;

 

 

文章来源: blog.csdn.net,作者:吾日三省贾斯汀,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/JustinQin/article/details/90510192

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。