当不使用对构造函数的调用而初始化java.lang.Double对象而是使用基元时发生了什么?它似乎工作,但我不知道为什么。编译器是否存在某种隐式转换?这是使用的Java 5.使用原始双精度值初始化Double对象
public class Foo {
public static void main(String[] args) {
Double d = 5.1;
System.out.println(d.toString());
}
}
当不使用对构造函数的调用而初始化java.lang.Double对象而是使用基元时发生了什么?它似乎工作,但我不知道为什么。编译器是否存在某种隐式转换?这是使用的Java 5.使用原始双精度值初始化Double对象
public class Foo {
public static void main(String[] args) {
Double d = 5.1;
System.out.println(d.toString());
}
}
这被称为Autoboxing其是在Java 5中加入它将原始类型和包装类型之间自动转换的特征如double
(原始)和java.lang.Double
(该对象包装)。 Java编译器自动将线:
Double d = 5.1;
成:
Double d = Double.valueOf(5.1);
它被称为AutoBoxing
自动装箱和 基本类型 原始类型之间的转换,例如自动开箱int,boolean, 及其等价物基于对象的 类似Integer a nd布尔型, 可能需要额外的编码,特别是如果 转换仅用于方法 调用Collections API, 示例。
自动装盒和自动拆箱 Java原语生成的代码更简洁,更易于操作。在 下一个示例int是 存储,然后从 ArrayList检索。 5.0版本将 转换为整数并转换回编译器所需的 。
以前
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(0, new Integer(42));
int total = (list.get(0)).intValue();
后
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(0, 42);
int total = list.get(0);
现在知道它被称为自动装箱,你可以在这里找到很多[有趣的文章](http://stackoverflow.com/search?q= [java] +自动装箱):) – 2010-07-20 14:03:34
Autboxing,这就是我正在寻找对于。谢谢! – 2010-07-20 14:54:51