Java 自动装箱与拆箱

1 .boxing and unboxing


Java 自动装箱与拆箱_第1张图片
boxing and unboxing

2 . An example for boxing  and unboxing

Java 自动装箱与拆箱_第2张图片
boxing and unboxing

3 .When autoboxing happen?

  当原始数据类型被当做参数传到了一个参数要求是包装类的方法里

  当原始数据被赋值给包装类对象


Java 自动装箱与拆箱_第3张图片
EXAMPLE 1

4 .When unboxing happen?

  当包装类被当做参数传到了一个参数要求是原始类型的方法里

  当包装类被赋值给原始数据类型


Java 自动装箱与拆箱_第4张图片
EXAMPLE 2

     上面程序打印结果:

     absolute value of -8 = 8

    pi = 3.1416


5 .Some things we need care about

Integer是对象类型,可以为null,如果这个时候拆箱,会报NullPointerException异常

Integer a,b,a==b比较的是a,b的引用,而不是值。但是由于Integer默认在-128到127之间有缓存(详见Integer源码),所以在这个区间使用==和equals的结果一样。

自动装箱与拆箱有性能损耗,只有在包装类和基本类型之间出现“阻抗不匹配(impedance mismatch)”时才使用,如,当需要将一个数值放到集合里面时。对性能要求很严格的地方谨慎使用。

原始数据类型和包装类之间的界限很模糊(blur),但谁都不能消灭(eliminate)对方。


链接:http://www.jianshu.com/p/eaf5eef18007

來源:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(Java 自动装箱与拆箱)