在Double Object文档中,它只有两个构造函数,一个构造函数使用一个双精度值,另一个构造函数使用一个字符串值。但是,我只是发现,如果我们使用其他Number类型的对象对其进行初始化,它也将起作用。例如,以下代码将起作用:Integer i = Integer.valueOf(10);Double d1 = new Double(i);Long l = Long.valueOf(100);Double d2 = new Double(l);所以我想知道这背后是什么?自动装箱/拆箱会在Double / double,Long / long和Integer / int之间进行转换,但是我不明白为什么Double的构造函数会采用其他数据类型。
1 回答
江户川乱折腾
TA贡献1851条经验 获得超5个赞
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)
添加回答
举报
0/150
提交
取消