关于包装类型那些你忽视的点

2023-08-31 八股文

# 1.将基本数据类型放入集合类

List<Integer> li = new ArrayList<>();
for (int i = 1; i < 50; i ++){
    li.add(i);
}

Java中的集合类只能接收对象类型,但上述代码并没有报错,包装类和基本类型支持自动拆箱与装箱,我们来看看编译后的代码:



 


List<Integer> li = new ArrayList<>();
for (int i = 1; i < 50; i += 2){
    li.add(Integer.valueOf(i));
}

# 2.包装类型和基本类型的大小比较与计算

查看如下代码,当我们包装类与基本类型进行大小比较或进行计算时,会将包装类拆箱成基本类型。

Integer a=1;
System.out.println(a==1?"等于":"不等于"); // 编译:System.out.println(a.intValue()==1?"等于":"不等于");
Boolean bool=false;
System.out.println(bool?"真":"假");  // 编译:System.out.println(bool.booleanValue?"真":"假");

Integer i = 10;
Integer j = 20;
System.out.println(i+j); //编译:System.out.println(i.intValue() + j.intValue());

# 3.三目运算符的坑

三目运算符的语法会在当第二、第三位操作数分别为基本类型和对象时,其中的对象就会拆箱为基本类型进行操作,所以即便k使用Integer对象接收仍然会报错。

public static void main(String[] args) {
    boolean flag = true;
    Integer i = null;
    int j = 1;
    Integer k = flag ? i : j; // int k = flag ? i.intValue() : j;
}
上次更新: 5 个月前