int data1 = 10;
int data2 = 20;
Integer wrapper1 = new Integer(data1);
Integer wrapper2 = new Integer(data2);
System.out.println(data1 / 3);
System.out.println(wrapper1.doubleValue() / 3);
System.out.println(wrapper1.compareTo(wrapper2));
Integer data1 = 10;//自动装箱
Integer data2 = 20;
int data3 = data1;//自动拆箱,此处将Integer直接赋值给int类型
System.out.println(data1.doubleValue() / 3);
System.out.println(data2.compareTo(data1));
System.out.println(data3);
自动拆装箱实际上是编译程序语法糖,在编译期间编译器会根据所写的代码决定是否进行装箱或者拆箱的动作。
Integer num = 100;
Integer localInteger = Integer.valueOf(100);
Integer i = null;
int j = i;
原因在于执行期间,编译程序会将上述代码展开为
Object localObject = null;
int i = localObject.intValue();