Java5之后支持自动装箱,自动拆箱:
自从jdk1.5之后,也就是java5之后,支持自动装箱,自动拆箱。
测试代码:
public class Test05 {
public static void main(String[] args) {
Integer i = 200; //将200自动装箱,
System.out.println(i); //200
int num = i; //将包装类自动拆箱
System.out.println(num); //200
//分析下面代码
System.out.println(i + 100); //300,不会报错,因为在计算i + 100时,会自动把i拆箱成200
System.out.println(i == 200); //true, Integer引用 跟 int型用“==”比较,也会自动拆箱
Integer j = 200;
System.out.println(j.hashCode()); //200,奇怪,j不是保存的是地址吗?怎么打印200?
// 翻看源代码可知,重写的hashCode()方法返回的是Integer的value本身
Integer x = 300; //相当于Integer x = new Integer(300); x中保存的是一个Integer对象的内存地址
Integer y = 300; //相当于Integer y = new Integer(300); y中保存的是一个Integer对象的内存地址
System.out.println(x == y); //false,两个引用之间用“==”比较时,不会拆箱,比较的是内存地址
}
}