自动打包特殊性
先看以下代码:
其实不是,这是JAVA的一个规定!
Java规范指出:特定的基本数据类型一定得被box成相同的不可变的wrapper对象。这些对象会被高速缓存重复使用,并且会被当作一般的对象使用。这些特定的基本数据类型包括:boolean值的true和false、所有的byte值、介于-128至127的short与int的值、以及介于\u0000与\u007F之间的任何一个char。
所以根据规范,TRUE就不足为奇了!!
Integer a=127;
Integer b=127;
System.out.println(a==b);//true
Integer j=128;
Integer i=128;
System.out.println(i==j);//false
你一定觉得很奇怪,为什么一个是TRUE,一个是FALSE呢?对于FALSE还比较好理解,不同的对象嘛,地址肯定是不同的结果当然就是FALSE,可为什么会有TRUE呢,是BUG吗!Integer b=127;
System.out.println(a==b);//true
Integer j=128;
Integer i=128;
System.out.println(i==j);//false
其实不是,这是JAVA的一个规定!
Java规范指出:特定的基本数据类型一定得被box成相同的不可变的wrapper对象。这些对象会被高速缓存重复使用,并且会被当作一般的对象使用。这些特定的基本数据类型包括:boolean值的true和false、所有的byte值、介于-128至127的short与int的值、以及介于\u0000与\u007F之间的任何一个char。
所以根据规范,TRUE就不足为奇了!!