簡體   English   中英

使用其他Number類型對象初始化Java Double Object

[英]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)調用,參數從Longlong取消裝箱。 這只能起作用,因為longdouble兼容。

所以:

但是,我剛剛發現,如果我們用其他Number類型對象初始化它,它也會起作用。

不,你仍然在調用帶有double參數的相同構造函數。

作為旁注,當你有一個Number對象時,而是調用它的doubleValue()方法來獲取原語,而不是通過使用new Double(long)構造它來創建另一個對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM