sab*_*ang 5 java type-conversion object-initialization
在Double 对象文档中,它只有两个构造函数,一个采用双精度值,另一个采用字符串值。但是,我刚刚发现,如果我们用其他 Number 类型对象初始化它,它也会起作用。例如,以下代码将起作用:
Integer i = Integer.valueOf(10);
Double d1 = new Double(i);
Long l = Long.valueOf(100);
Double d2 = new Double(l);
Run Code Online (Sandbox Code Playgroud)
所以我想知道这背后是什么?自动装箱/拆箱会在 Double/double、Long/long 和 Integer/int 之间进行转换,但我不明白为什么 Double 的构造函数会采用其他数据类型。
Long l = Long.valueOf(100);
Double d2 = new Double(l);
Run Code Online (Sandbox Code Playgroud)
上面的代码没有进行调用Double(Long),而是进行了可用的Double(long)调用,参数从Longto中取消装箱long。这只有效,因为long与double.
所以:
但是,我刚刚发现,如果我们用其他 Number 类型对象初始化它,它也会起作用。
不,您仍在调用作为double参数的相同构造函数。
附带说明一下,当您Number手头有一个对象时,请调用其doubleValue()方法来获取原语,而不是通过使用构造它来创建另一个对象new Double(long)
| 归档时间: |
|
| 查看次数: |
1429 次 |
| 最近记录: |