[英]Java Double Object initialization with other Number type objects
在Double對象文檔中,它只有兩個構造函數,一個采用double值,另一個采用字符串值。 但是,我剛剛發現,如果我們用其他Number類型對象初始化它,它也會起作用。 例如,以下代碼將起作用:
Integer i = Integer.valueOf(10);
Double d1 = new Double(i);
Long l = Long.valueOf(100);
Double d2 = new Double(l);
所以我想知道背后是什么? Autoboxing / unboxing會在Double / double,Long / long和Integer / int之間進行轉換,但我不明白為什么Double的構造函數會采用其他數據類型。
Long l = Long.valueOf(100);
Double d2 = new Double(l);
上面的代碼沒有進行Double(Long)
調用,它會進行可用的Double(long)
調用,參數從Long
到long
取消裝箱。 這只能起作用,因為long
與double
兼容。
所以:
但是,我剛剛發現,如果我們用其他Number類型對象初始化它,它也會起作用。
不,你仍然在調用帶有double
參數的相同構造函數。
作為旁注,當你有一個Number
對象時,而是調用它的doubleValue()
方法來獲取原語,而不是通過使用new Double(long)
構造它來創建另一個對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.