面试题之基本数据类型和包装类

Java基本数据按类型可以分为四大类:布尔型,整数型,浮点型,字符型,这四大类包含8中基本数据类型。

布尔型:boolean
整数型:byte、short、int、long
浮点型:float、double
字符型:char

8种基本类型取值如下:
面试题之基本数据类型和包装类_第1张图片
byte占1个字节,8位
short占2个字节,16位
int占4个字节,32位
long占8个字节,64位
float占4个字节,32位
double占8个字节,64位
char占2个字节,16位
boolean占1个字节,8位

包装类特性有哪些呢?

1.功能丰富

包装类本质上是一个对象,对象就包含属性和方法,比如hashCode、getClass、max、min等。

2.可定义泛型类型参数

包装类可以定义泛型,而基本类型不行。

比如使用Integer定义泛型,代码:

List list = new ArrayList<>();
如果使用int定义就会报错
3.序列化
因为包装类都实现了Serializable接口,所以包装类天然支持序列化和反序列化。
4.类型转换
包装类提供了类型转换的方法,可以很方便的实现类型之间的转换,比如Integer类型转换代码:

 		String age = "20";
        int ageInt = Integer.parseInt(age) + 2;
        //输出结果:22
        System.out.println(ageInt);

5.高频区间的数据缓存
我们来看下面试题:

  1. 以下 Integer 代码输出的结果是?
Integer age = 10;
Integer age2 = 10;
Integer age3 = 133;
Integer age4 = 133;
System.out.println((age == age2) + "," + (age3 == age4));

答:true,false
解析:

以 Integer 为例来说,在数值区间为 -128~127 时,
会直接复用已有对象,在这区间之外的数字才会在堆上产生。
  1. 以下 Double 代码输出的结果是?
Double num = 10d;
Double num2 = 10d;
Double num3 = 133d;
Double num4 = 133d;
System.out.println((num == num2) + "," + (num3 == num4));

答:false,false
解析:

Double 不会有缓存
10d表示这个数字的类型为double

总结
各包装类高频区域的取值范围:
Boolean:使用静态 final 定义,就会返回静态值
Byte:缓存区 -128~127
Short:缓存区 -128~127
Character:缓存区 0~127
Long:缓存区 -128~127
Integer:缓存区 -128~127
Float 和 Double 不会有缓存,其他包装类都有缓存。
Integer 是唯一一个可以修改缓存范围的包装类,在 VM optons 加入参数:
-XX:AutoBoxCacheMax=666 即修改缓存最大值为 666 。

参考资料:
1.基本数据类型和包装类
2.基本数据类型和包装类的 面试题
3.java泛型一定用包装类_你不知道的基本数据类型和包装类
java中基本数据类型和包装类详解

你可能感兴趣的:(面试,java,Interger)