1. int和Integer的区别?
区别:
- int则是java的一种基本数据类型,Integer是int的包装类,是引用数据类型。
- int变量直接存储数据值,Integer必须实例化后才能使用,存储的是对象的地址。
- int的默认值是0,Integer的默认值是null。
- java是面向对象的语言,都是基于对象操作的,比如集合,基本数据类型是放不进去的,包装类型才能放进去。
2. 什么是自动装箱和自动拆箱?
jdk1.5后可以自动实现装箱和拆箱。装箱是指,将基本数据转化成对象。转化为对象就可以利用对象的方法更方便的实现对数据的操作,也更符合面向对象编程的思想。拆箱就是装箱的逆过程,就是将对象转化为基本数据类型。
3. 什么时候会自动装箱,什么时候自动拆箱,
- 在将基本类型的值赋值给包装类型时会自动装箱。例如:Integer a = 1;
- 在将包装类型赋值给基本类型时会自动拆箱。例如:Integer a = 1;int b = a;
- 包装类型和基本数据类型进行比较时,java会将包装类型自动拆箱为基本数据类型,然后进行比较
- 包装类型在用运算符运算时,会自动拆箱
4. 什么情况下不能将Integer赋值给int类型,什么情况下只能用Integer
- Integer为null时不可以,因为如果Integer赋值为null,然后再赋值给int类型,会出现空指针异常。
- 如果需要区分未赋值和0的区别,就只能用Integer。因为int的默认值为0,而Integer的默认值为null。
- 当需要往ArrayList,HashMap等集合中放东西时,int基本数据类型是放不进去的,因为容器都是装 object的,这时就需要包装类型Integer了。