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

在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的构造函数会采用其他数据类型。


青春有我
浏览 225回答 1
1回答

江户川乱折腾

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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java