对象包装器

对象包装器包括Integer、Long、Float、Double、Shout、Byte、Character、Void、Boolean。
对象包装器是final的,即不可变对象。装箱拆箱是编译器认可的,不是虚拟机,在生成字节码文件时就已经插入相应转换,再执行。

  • 自动装箱

list.add(2);

将被自动转换为:

list.add(Integer.ValueOf(2));
  • 自动拆箱

int i = list.get(0);

将被自动转换为:

int i = list.get(0).intValue();
  • 装箱后的equals

下面返回的是false,因为==比较的是对象,装箱后表示两个不同的对象,因此需要使用equals();

Integer a = 1;
Integer b = 2;
if(a == b){
    return ture;
}
return false;
  • 表达式混合两种装箱类型

若表达式混合两个装箱类型,如Integer和Double,则Integer会自动拆箱,转换为double,并且自动装箱为double;

Interger a = 1;
Double b = 2.0;
System.out.println(true ? a : b);   //print:1.0

你可能感兴趣的:(对象包装器)