知识:

当程序进行涉及到装箱和拆箱基本类型和混合类型计算时,会进行拆箱

基本类型和装箱基本类型之间的三个主要区别:

1.基本类型只有值,而装箱基本类型具有与它们的值不同的同一性(两个装箱基本类型可以具有相同的值和不同的同一性)

2.基本类型只有功能完备的值,而每个装箱基本类型除了它对应的基本类型的所有功能值之外,还有个非功能值:null

3.基本类型通常比装箱基本类型更节省空间和时间。

适合使用装箱基本类型的地方:

1.作为集合中的元素,键和值。

2.在参数化类型中,必须使用装箱基本类型作为类型参数。

3.在进行反射方法调用时,必须使用装箱基本类型。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package book.effectiveJava;

import java.util.Comparator;

public class e_49_PreferPrimitiveType {

private static Integer d=null;
public static void main(String[] args) {



long start = System.currentTimeMillis();
long sum = 0L; //耗时 1s
// Long sum = 0L; //耗时 10s
for(long i = 0; i < Integer.MAX_VALUE; i++) {
sum += i;
}
System.out.println(System.currentTimeMillis()-start+" sum:"+ sum);

Integer a = 42;
Integer b = 42;

System.out.println(a==b);

System.out.println(new Integer(12)==new Integer(12));
Comparator<Integer> comparator=new Comparator<Integer>() {
@Override
public int compare(Integer first, Integer second) {
return first < second ? -1 : (first == second ? 0 : 1);
}
};
System.out.println(comparator.compare(new Integer(42),new Integer(42)));

System.out.println(comparator.compare(a,b));

//包装基本类型拆箱 会爆出NPE
System.out.println(d==13);
}
}