扫码关注公众号

Java考点之基本数据类型和装箱类
10-22
44观看
01

java 语句 Integer i = 1; i += 1; 做了哪些事情?

答:首先Integeri=1;做了自动装箱(使用valueOf()方法将int装箱为Integer类型),接着i+=1;先将Integer类型的i自动拆箱成int(使用intValue()方法将Integer拆箱为int),完成加法运行之后的i再装箱成Integer类型。

来自:基本数据类型-装箱和拆箱
02

何为装箱与拆箱

装箱就是将基本数据类型转化为包装类型,那么拆箱就是将包装类型转化为基本数据类型。以基本数据类型int为例:packageday1119;publicclassTestBox{publicstaticvoidmain(String[]args){//自动装箱,底层其实执行了Integera=Integer.valueOf(1);Integera=1;//自动拆箱,底层其实执行了intb=a.intValue();intb=a;}}Integer的valueOf(inti)方法可以将一个基本数据类型转化为对应的包装类型,即装箱方法。而Integer的intValue()方法则可以将一个包装类型转化为对应的基本数据类型,即拆箱方法。

来自:基本数据类型-装箱和拆箱
03

对于Integer的执行,下列两个输出的结果是什么?

正确答案是A答案是A这里要理解装箱类的new和直接赋值的区别,直接赋值是调用了valueOf方法,从valueOf方法的源码可以看到,当传入的值在缓存区的范围内,就会直接在缓存区取值,只有当传入的数值不在缓存区范围内,才会去new一个新的对象缓存区的范围是-128到127之间,100在缓存区内,所以直接在缓存区中取值,两个对象的引用是同一个,所以结果为true100是基本数据类型,赋值给包装类型,所以执行了自动装箱操作,自动装箱的操作就是调用的valueOf方法,而且数值在缓存区范围内,所以在缓存区内取数据,和上面的题一样,结果为true200是基本数据类型,赋值给包装类型,所以执行了自动装箱操作,自动装箱的操作就是调用的valueOf方法,但是200不在缓存区范围内,所以需要去new一个对象,两者的引用自然不同,结果为false

来自:基本数据类型-装箱和拆箱
04

相关基本数据类型,以下表达式正确的是

正确答案是D需要对基本数据类型的长度范围有简单快速计算方法,比如D选项中的2147483648是整数最大值+1;byte型的最大正数为127,A错误;Boolean型是基本数据类型,不能赋值为null;0.9239默认为double类型,double赋值给float属于下行,需要加转化,一般加0.9239f;数字后面加L表明为long类型,float到long属于上行,自动变化。如果去掉L,则表明为整数,溢出。

来自:基本数据类型-数据类型的长度和转换
课程
专栏
【校招VIP】【JAVA】谈谈拆箱与装箱
装箱就是将基本数据类型转化为包装类型,那么拆箱就是将包装类型转化为基本数据类型。
csdn
拆箱与装箱
【校招VIP】java中装箱和拆箱的详细使用(详解)
csdn
装箱
拆箱
【校招VIP】Java 基本数据类型基础面试题
知乎
基本数据类型
3专栏
1课程
4 试题