在java中==和equals()的区别

在java中==和equals()的区别

(1)首先 == 是java提供的等于比较运算符,用来比较两个变量指向的内存地址是否相同;而equals()是Object提供的一个方法,是判断两个变量或者实例指向的内存地址的值是不是相同。

(2)对于基本数据类型和String str = 123;中的String常量来说,是作为常量在方法区中的常量池里面以HashSet策略存储起来的,每个数据对应一个地址,所以基本数据类型和String常量可以直接用 == 进行比较。

(3)对于实例对象来说,String str1 = new String("123"); String str2 = new String("123");中字符串str1和str2就不能用 == 比较,要用equals()方法比较。因为此时两个字符串在堆内存的地址不同。

(4)对于基本数据类型的包装类来说,除了Float和Double之外,剩下的六种包装类(Byte, Short, Character,Integer,Float, Double,Long, Boolean)都实现了常量池,但是它们在常量池中的存储范围为[-128,127],超出这个范围仍然会去堆内存中创建新的对象。所以在[-128,127]范围内包装类可以用 == 比较,超出此范围要用equals()方法比较。所以包装类一般都使用equals()方法比较。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值