小技巧之Integer类型==的边界问题

小技巧
placeholder image
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对比即可。


 点赞


 发表评论

当前回复:作者

 评论列表


留言区