java封装类和基本数据类型的比较 |
您所在的位置:网站首页 › integer值的比较 › java封装类和基本数据类型的比较 |
num1 == num2 的结果为:true,可见Integer对象和int数据类型比较,只要数值相同,==比较的结果为true;**其比较原理为:先将num2对象调用其intValue方法拆箱成基本数据类型int,然后在用拆箱后的int类型的值和num1比较,故其结果为true;**另:其几种类型和其封装类比较亦是如此; num2 == num3 的结果为:true,这可能会奇怪,这个明明是两个对象的比较,怎么会true呢,其实这个是Integer的缓存原因,在Integer num2 = 127;这句代码赋值中,前面定义的是封装类声明,而后面是基本数据类型int的值,按理说是会报错的,但java有自己的自动拆箱(unboxing)&自动装箱(boxing)机制,此时会将后面的int基本数据类型装箱封装成Integer对象,而装箱调用的是Integer.valueOf(int i)方法,说了这么多终于说到重点了,缓存就是在valueOf这个方法中的,让我们先看这段代码: num4 == num5 的结果为:false,经过上述2中的解释,这个结果的原因就显然易得了,因为128不在缓存的范围内,所以各自创建了对象,不同对象相比较,结果为false; num5 == num6 的结果为:true,此为验证int和Integer值相同相比较是否受缓存限制,结果为true,显然是不受的,,但此步有点鸡肋了,细想这个的1中已经解释清楚了,是拆箱,拆箱后就都是基本数据类型了; |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |