基本类型以及包装类型
java中定义了基本类型:
* 整形: byte、short、int、long
* 浮点型:float、double
* 逻辑型: boolean
* 字符型: char
以及对应的包装类型:
* 整形: Byte、Short、Integer、Long
* 浮点型: Float、Double
* 逻辑型: Boolean
* 字符型: Char
自动装箱、拆箱
java为满足程序员基本类型和包装类型混合使用,按需自动装箱拆箱。
自动装箱拆箱使基本类型和包装类型之间的区别逐渐模糊,但是语义上有些许差别,性能上也有明显差别。
基本类型和包装类型差别
- 基本类型有默认值,例如int值默认为0 ,而Integer没有默认引用,默认为null。
所以在写数据库实体类或者网络请求接收字段的时候要使用包装类型,防止接受参数为null的情况。 包装类的频繁更改并不是在原来的基础上更改,而是产生新的对象,所以包装类的频繁更改性能很差.
使用Long情况
1
2
3
4
5
6
7
8long now = System.currentTimeMillis();
Long sum = 0L;
for (int i = 0; i < Integer.MAX_VALUE; i++) {
sum += i;
}
System.out.println(sum);
long end = System.currentTimeMillis();
System.out.println("using Long total time = " + (end - now));耗费时间为
1
22305843005992468481
all time = 8832使用long情况
1
2
3
4
5
6
7
8
9
10private static void testlongAutoBoxing() {
long now = System.currentTimeMillis();
long sum = 0L;
for (int i = 0; i < Integer.MAX_VALUE; i++) {
sum += i;
}
System.out.println("using long ,sum =" + sum);
long end = System.currentTimeMillis();
System.out.println("using long total time = " + (end - now));
}总耗费时间为
1
22305843005992468481
all time = 787在使用Long的时间比long增加10倍,原因是Long的操作过程中会构造大概2^31个实例。