-128~127以及 ==和equals

首先是==( 判断地址 前提:引用数据类型 ):
这里写图片描述
运行结果:
这里写图片描述
是不是很奇怪。。

一、为什么可以这样写?(Integer a = 3;)
在JDK1.5之后支持了自动打包和解包
20是int型,存入的基本类型会经过自动封装为引用类型,变成Integer,但是你自己定义的类该new还得new啊,,这里只是说基本类型。

二、为什么明明是两个对象,a == b而c!=d呢?
在-128~127的Integer值并且以Integer x = value的方式赋值的Integer值在进行==和equals比较时,都会返回true,因为Java里面对处在在-128~127之间的Integer值,用的是原生数据类型int,这255个地址空间会在内存里供重用,也就是说这之间的Integer值进行==比较时只是进行int原生数据类型的数值比较,而超出-128~127的范围,进行==比较时是进行地址及数值比较。
而写的 Integer i = new Integer(10);说明我要new一个新的,就不会和之前的重用了

下面是equals(判断地址内的值 前提:引用数据类型):
这里写图片描述
结果:
这里写图片描述
都相等,因为指向地址内存的值相等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值