“嗨,阿米戈!”
“今天我要说的是自动装箱,自动装箱就是自动把东西放进盒子里。”
“你会记得 Java 有继承 Object 类的类型,以及原始类型。但事实证明,像集合和泛型这样方便的东西只适用于继承 Object 的类型。”
“然后决定制作每个原始类型的非原始对应物。”
原始类型 | 非原始对应物 |
---|---|
字节 | 字节 |
短的 | 短的 |
整数 | 整数 |
长的 | 长的 |
漂浮 | 漂浮 |
双倍的 | 双倍的 |
布尔值 | 布尔值 |
字符 | 特点 |
空白 | 空白 |
“但是一直在这些类型之间转换非常不方便:”
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