Java 鼓吹 everything is an object,结果有八个东西不是object,于是被称为primitive
int 变成 Integer 曰 boxing,反之曰 unboxing
1.5的新特性之一就是把这两个动作变automatic了,也就是原本的:
Integer i = new Integer(0);
int ii = i.intValue();
可以简化成:
Integer i = 0;
int ii = i;
没什么本质的差别,只是帮程序员写了点东西而已。c#1.0里就有的东西,因此上boxing 商业竞争的味道更浓一点,技术上就算不了什么革新了。
以下一段代码可以很好的涵盖boxing 和unboxing的全部内容(摘自Java in a Nutshell, 5th edition):
Integer i = 0; // int literal 0 is boxed into an Integer object Number n = 0.0f; // float literal is boxed into Float and widened to Number Integer i = 1; // this is a boxing conversion int j = i; // i is unboxed here i++; // i is unboxed, incremented, and then boxed up again Integer k = i+2; // i is unboxed and the sum is boxed up again i = null; j = i; // unboxing here throws a NullPointerException