equals,==与 hashcode

本文解析了Java中equals与==操作符的区别及hashCode的作用, 特别针对String类的equals方法进行了详细说明, 并探讨了String对象的引用与值比较, 以及intern方法的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

equals与== hashcode
== 作用于两个对象上时 比较的时对象的引用(reference)是否指向同一对象

String 覆写了父类Object的equals方法 内容相同时返回true


String a="abc";
String b="abc";
String c = new String("abc");
System.out.println("a==b:"+a==b);
System.out.println("a==c:"+a==c);

System.out.println("(a==b):"+(a==b));
System.out.println("(a==c):"+(a==c));

System.out.println("a equals b:"+a.equals(b));
System.out.println("a equals c:"+a.equals(c));

System.out.println("a.hashcode:"+a.hashCode());
System.out.println("b.hashcode:"+a.hashCode());
System.out.println("c.hashcode:"+a.hashCode());


运行结果:

false
false
(a==b):true
(a==c):false
a equals b:true
a equals c:true
a.hashcode:96354
b.hashcode:96354
c.hashcode:96354


String这个类的equals方法比较特殊,它先比较引用,如果引用相等,那么返回值就是true,如果引用不相等,

那么再比较值,如果值相等,那么返回值也是true,只有当引用和值都不相等的情况下,返回的才是false

关于String中的intern()方法,此方法返回的始终是String pool中的字符串,我也在以前的文章说过,String的创建过程,如果String pool中不存在此字符串,那么创建一个新的返回,如果有的话,就直接返回此对象,

遵循对于任何两个字符串 s 和 t,

当且仅当 s.equals(t) 为 true 时,s.intern() == t.intern() 才为 true。


==用于比较引用和比较基本数据类型时具有不同的功能:
比较基本数据类型,如果两个值相同,则结果为true
而在比较引用时,如果引用指向内存中的同一对象,结果为true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值