jdk5加入了自动拆箱与装箱的功能。
比如Integer a = 100;编译是可以通过的。
“==”:对于对象来说比较的是内存地址。但对于原始类型来说比较的就是内容。
看下面的例子:
Integer a = 127;
Integer b = 127;
if(a==b){
System.out.println("111111");
}else{
System.out.println("222222");
}
输出的111111。
再看下面的例子:
Integer a = 128;
Integer b = 128;
if(a==b){
System.out.println("111111");
}else{
System.out.println("222222");
}
输出的222222.
怎么会这样呢?
原来值在-128到127之间的话,编译器是把它当成原始类型来处理的,否则就是当成对象来处理了。