Java常见面试题(1)
程序员文章站
2022-06-09 20:05:56
...
1.数据类型
包装类型
8大基本数据类型
- boolean 1 字节
- byte 8
- char 16
- short 16
- int 32
- float 32
- long 64
- double 64
基本类型都有对应的包装类型,基本类型与其对应的包装类型之间的赋值
使用自动装箱和拆箱完成
2.缓存池
new Integer(123)和Integer.valueOf(123)的区别在于:
- new Integer(123)每次都会新建对象
- Integer.valueOf()会将创建的对象放在缓存池中,多次调用时会取同一个对象的引用
Integer b=new Integer(123);
a==b //false
Integer a=Integer.valueOf(123);
Integer b=Integer.valueOf(123);
a==b // true
valueOf()的方法实现比较简单
- 判断是否在缓冲池中
- 若存在则会返回存在缓冲池中的内容
在Java8中,Integer缓存池的默认大小为:(-128-127);
编译器会在自动装箱过程调用valueOf()方法,因此多个Integer实例使用自动装箱来创建并且值相同,那么就会引用相同的对象
基本类型对应的缓冲池如下:
- boolean values true and false
- all byte values
- short values between -128-127
- int values between -128-127
- char in the range \u0000 to \u007f
使用基本类型对应的包装类型时,就可以直接使用缓冲池中的对象