Java的自动拆箱和装箱
以下图片来源于博客:https://blog.csdn.net/qq_39632912/article/details/79124330?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
Integer无法转换为Double
int无法转换为Double
Integer可以转换为double
int当然也可以转换呢为double了,这个显然,就不上图了
其中原因涉及到自动拆箱和装箱的原理:
以下内容参考于:https://www.cnblogs.com/danne823/archive/2011/04/22/2025332.html
Integer->int
实际执行的是i.intValue()方法(i是一个Integer对象),并将返回值赋给一个int值
int->Integer:
实际执行的是Integer.valueOf(int i),返回值是一个Integer对象,该对象的引用传给前面
这些操作是我们写下Integer i=100;时,编译器将该语句自动解析为Integer i = Integer.valueOf(100);的
所以说,所谓自动拆箱和装箱,都是基于对象或者类所拥有的方法和属性的,而我们看上面:Integer对象并没有将自身转为Double对象的属性、Double类也没有接受Int返回Double的方法。唯一不一样的是Integer可以转换为double,这是因为int转double就是隐式的,所以实际上只是Integer转为了int,所以是可以的
所以说,从一个包装类是不能直接转为另一个包装类的,当然我这里说的都是数相关的
另外,我觉得第二个博文中作者对String的解释比较不靠谱,这其实是个字符串常量池的问题
以上是 Java的自动拆箱和装箱 的全部内容, 来源链接: utcz.com/z/392482.html