基本数据类型封装类型的自动装箱和拆箱
基本数据类型封装类型
在java的学习中每一个基本数据类型都有一个与之相对应的引用数据类型,基本数据类型一般用数据的运算,布尔逻辑,关系等运算,但是无法创建对象,也就无法调用数据类型相关的方法。可以通过基本数据类型的封装类型来进行方法的调用。以int类型作为举例。
在java的学习中每一个基本数据类型都有一个与之相对应的引用数据类型,基本数据类型一般用数据的运算,布尔逻辑,关系等运算,但是无法创建对象,也就无法调用数据类型相关的方法。可以通过基本数据类型的封装类型来进行方法的调用。以int类型作为举例。
在实际程序使用中,程序界面上用户输入的数据都是以字符串类型进行存储的。而程序开发中,我们需要把字符串数据,根据需求转换成指定的基本数据类型,如年龄需要转换成int类型,考试成绩需要转换成double类型等。那么,想实现字符串与基本数据之间转换怎么办呢?
Java中提供了相应的对象来解决该问题,基本数据类型对象包装类:java将基本数据类型值封装成了对象。封装成对象有什么好处?可以提供更多的操作基本数值的功能。
其中需要注意int对应的是Integer,char对应的Character,其他6个都是基本类型首字母大写即可。
基本数据类型 | 封装类型 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
自动装箱和拆箱
在需要进行使用的情况下,基本数据类型和封装类型是可以通用的。有些时候我们必须使用引用数据类型,可以传入基本数据类型
比如:
基本数据类型可以使用运算符进行运算,但是引用数据类型不可以。基本数据类型的封装作为引用数据类型的时候可以进行计算。
原因在于,java在后台"偷偷的"自动进行了对象转换成基本数据类型
引用数据类型的对象的值必须是new出来的内存空间,而我们就可以将一个基本数据类型的值,赋值给一个基本数据类型的封装类型的引用。java在底层偷偷的将基本数据类型转换成了对象
特殊:底层有一个IntegerCache的缓存数组,存储的范围的值是:-128 ---- 127 之间,如果是这个范围就返回为true
如果不在这个返回,底层就会新new出来一个Integer对象,所以地址比较的时候就会返回为false
- 自动拆箱
对象转换成基本数据类型 Integer —> intValue —> int - 自动装箱
基本数据类型转成对象 int —> valueOf —> Integer
Integer i = 6; //自动装箱,相当于使用Integer i = Integer.valueO(6)
i = i + 5;//等号右边 : 将i对象转换成基本数据类型(自动拆箱)
i.intVaule() + 5 //加法计算完成之后,在此再次装箱,把基本数据传给对象