问:基本类型与包装类型的主要区别
答
Integer a=new Integer(0);//通过new 创建对象
Integer b=new Integer(0);
System.out.println(a==b) ;//此时a和 b所指的对象不同,所以结果是false.
Integer d=0;//直接赋值并没有创建对象
Integer c=0;
System.out.println(c==d);//结果true,没有超出范围.从缓存中返回同一个对象的引用
Integer f=128;//创建对象
Integer g=128;
System.out.println(f==g);//结果false,超出范围相当于第一种情况,通过new创建对象
当我们直接给一个 Integer 类型的变量赋值的时候,会默认调用 Integer 的 valueOf方法。
Integer 具有缓存值 IntegerCache.low 和 IntegerCache.high ,对应的值分别是 -128 和 127。当我们给一个 Integer 赋的值 在这个缓存值的范围内就直接会从缓存返回一个相同的引用,所以无论怎样比较都是相同的,而当超过这个范围时,java 就会重新 new 一个对象,因此两者比较是不相同的。
基本类型没有缺失值,而引用类型是有缺失值的,其值为 null。
基本类型通常比包装类型更节省时间与空间。
包装类型使用的时机:
a. 作为集合中的元素、键、值;
b. 在参数化类型中(即泛型);
c. 在进行反射方法的调用时。