“嗨,阿米戈!”
“今天我要说的是自动装箱,自动装箱就是自动把东西放进盒子里。”
“你会记得 Java 有继承 Object 类的类型,以及原始类型。但事实证明,像集合和泛型这样方便的东西只适用于继承 Object 的类型。”
“然后决定制作每个原始类型的非原始对应物。”
原始类型 | 非原始对应物 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
char | Character |
void | Void |
“但是一直在这些类型之间转换非常不方便:”
int x = 3;
Integer y = new Integer(x + 1);
int z = y.intValue();
“尤其是在直接使用集合时:”
例子
int[] numbers = new int[10];
ArrayList list = new ArrayList();
for (int i = 0; i < numbers.length; i++)
{
list.add( new Integer(i));
}
“这就是为什么 Java 的创造者发明了原始类型的 «自动装箱» 以及对非原始类型的‘拆箱’。”
“这是它的工作原理:
你看到什么了 | 真正发生了什么 |
---|---|
|
|
|
|
|
|
|
|
“这一切都很简单。您可以将 int 和 Integer 类型分配给彼此,编译器会处理其他所有事情。”
“那很方便。”
“是的。但有些细微差别我稍后会谈到。”
GO TO FULL VERSION