小技巧之Integer类型==的边界问题
小技巧admin 发布于:2015-11-24 10:48:26
阅读:loading
虽然jdk的自动装箱拆箱跟程序带来很大的便捷,基于包装类型的值判断逻辑建议大家一律使用equals函数,或者使用intValue()之类的函数来进行比较,在遇到一些边界值的问题时,保不齐程序就会出现错误,参考如代码:
public static void main(String[] args) {
Integer a = 127;
Integer b = 127;
System.out.println(a == b);//输出 true
Integer c = 128;
Integer d = 128;
System.out.println(c == d);//输出false
Integer m = -128;
Integer n = -128;
System.out.println(m == n);//输出true
Integer y = -129;
Integer x = -129;
System.out.println(x == y);//输出false
System.out.println();
System.out.println();
}
个人认为这个是因为数值的边界值的问题,在Byte.MAX_VALUE=127与Byte.MIN_VALUE=-128之间时可以直接用==比较,在此之外的就为false,另外其它的数字类型,如Long类型的也存在一个边界值的问题。在Alibaba的编码规范中要求使用equals来代替==的比较,所以一律无脑使用equals对比即可。
点赞