Java中==和equals的区别?

Java中,==用于比较基本类型时比较值,而引用类型时比较内存地址。equals默认比较对象地址,但如String等类重写了该方法以比较内容。Integer对象在-128到127间会使用缓存,导致相同值的Integer用==比较可能为true。

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

Java中==和equals的区别?

== :

判断基本类型时候:比较两个基本数据类型的值是否相同;比如:int 10和int 20,返回false;

判断引用类型时候:比较的是两个对象内存地址是否相同,比如:两个不同Integer 的是1000,它是返回值是false;需要注意的时:如果两个不同Integer的值是10,它返回值是true;

equals:

equals方法是Object类里面提供的一个方法,用来定义对象的内容是不是相等;(注意:equals方法不能作用于基本数据类型的变量)

如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;

诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。 例如; 判断是否String相等;

首先:看内存,其次看数据类型,然后看字符串的长度是否一致,最后比较字符串里边的内容

补充:

java内部为了节省内存,IntegerCache类中有一个数组缓存了值从-128到127的Integer对象。当我们调用Integer.valueOf(int i)的时候,如果i的值时结余-128到127之间的,会直接从这个缓存中返回一个对象,否则就new一个新的Integer对象。 即:当我们定义两个Integer的范围在【-128—+127】之间,并且值相同的时候,用==比较值为true;

当大于127或者小于-128的时候即使两个数值相同,也会new一个integer,那么比较的是两个对象,用==比较的时候返回false;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

€☞扫地僧☜€

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值