今天看到项目中很多地方用Integer 比较,觉得有不妥之处,先记录下。
java中Integer类型对于-128-127之间的数是缓冲区取的,所以用等号比较是一致的。但对于不在这区间的数字是在堆中new出来的。所以地址空间不一样,也就不相等。
所以,以后碰到Integer比较值是否相等需要用intValue()
Double没有缓冲区。
本文探讨了Java中Integer类型的比较陷阱,特别是在-128到127区间外的数字比较时的问题,并提供了正确的比较方式。
今天看到项目中很多地方用Integer 比较,觉得有不妥之处,先记录下。
java中Integer类型对于-128-127之间的数是缓冲区取的,所以用等号比较是一致的。但对于不在这区间的数字是在堆中new出来的。所以地址空间不一样,也就不相等。
所以,以后碰到Integer比较值是否相等需要用intValue()
Double没有缓冲区。
805
3838

被折叠的 条评论
为什么被折叠?