为了账号安全,请及时绑定邮箱和手机立即绑定

Java Double Object与其他Number类型对象的初始化

Java Double Object与其他Number类型对象的初始化

青春有我 2021-04-06 13:14:14
在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)


查看完整回答
反对 回复 2021-04-21
  • 1 回答
  • 0 关注
  • 224 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信