当我们在比较Java中Interger类型的数据时,有时候会发现两个明明相同的值,最后比较的结果为false,这是为什么呢?这就要了解一下我们常说的“128陷阱”
在Java中,Interger是数据类型int的封装类,Java设计者是这么认为的:
下面我们来看看代码:每次都要开辟新空间会占用大量的资源,因此他们规定在-128~127(因为Java设计者认为大家对数的使用大多在100以内)之间的Integer类型的变量,直接指向常量池中的缓存地址,不会new开辟出新的空间。
public static void main(String[] args) {Integer a1=127;Integer a2=127;Integer b1=128;Integer b2=128;System.out.println(a1==a2);System.out.println(b1==b2);}
运行结果为:
*如果想要正确比较的话,一定要拆箱比较,即在变量后加intValue()方法
*如果想要正确比较的话,一定要拆箱比较,即在变量后加intValue()方法
*如果想要正确比较的话,一定要拆箱比较,即在变量后加intValue()方法
重要的事情说三遍。
public static void main(String[] args) {Integer a1=127;Integer a2=127;Integer b1=128;Integer b2=128;System.out.println(a1.intValue()==a2.intValue());System.out.println(b1.intValue()==b2.intValue());}
本文发布于:2024-02-01 10:50:48,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170675584836097.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |