Java的自动拆箱和装箱

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

  1. Integer无法转换为Double

    img

  2. int无法转换为Double

    img

  3. Integer可以转换为double

    img

  4. int当然也可以转换呢为double了,这个显然,就不上图了


其中原因涉及到自动拆箱和装箱的原理:

以下内容参考于:https://www.cnblogs.com/danne823/archive/2011/04/22/2025332.html

  1. Integer->int

    实际执行的是i.intValue()方法(i是一个Integer对象),并将返回值赋给一个int值

  2. 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的解释比较不靠谱,这其实是个字符串常量池的问题

猜你喜欢

转载自www.cnblogs.com/jiading/p/12447286.html