當不使用對構造函數的調用而初始化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