一.包装类
Java的8种基本类型boolean,byte,short,char,int,long,float,double都不具备对象特征:没有对象的属性,也没有对象的方法可以调用。
但Java提供了8中基本数据类型对应的对象类型,这些类型叫做包装类。
1.概述
在Java中提供了两种类型系统,基本类型与引用类型。基本类型在于提高效率,引用类型可以提供更多功能,如果我们想要基本类型像对象一样操作,我们就可以使用基本类型对应的包装类
例如:我们可以利用Integer中的静态方法parseInt将字符串整数转变为int类型;我们可以利用Character中的isLowerCase判断字符是否是小写字母等等...
Java中一共定义了8种基本数据类型,其分别对应的包装类如下:
2.装箱与拆箱
基本数据类型与其对应的包装类之间来回转换的过程称为装箱与拆箱
①装箱
从基本数据类型转换为对应的包装类对象
例如我们可以这样写:其中a是int类型,而b是一个Integer类型,我们把基本类型的数据转换为包装类对象的过程,叫做装箱
int a=67;//int类型
Integer b=new Integer(a);//Integer类型
②拆箱
同理,我们将包装类对象转换为对应的基本数据类型的过程称为拆箱
③自动装箱与拆箱
由于我们经常要做基本类型与包装类之间的转换,因此在JDK1.5以后的版本中,Java支持自动装箱和自动拆箱,基本类型与包装类的装箱拆箱动作可以自动完成
Integer a=67;//将int类型转换为Integer类型
int b=a;//将Integer类型转换为int类型
3. 常用包装类
(一)Integer类
Integer类是int类型对应的包装类,是Java.lang包下的,因此我们在使用时不需要导包
⑴构造方法
⑵常用方法
在Integer类中定义了两个常量MAX_VALUE和MIN_VAKUE,分别表示int类型的最大值和最小值,也是平时我们经常使用的
①valueOf()
表示静态获取Integer对象(常用)
如图:通过方法的底层代码,最终方法返回的也是构造方法
细节:
细看源码,if语句里面返回的不是构造方法!
我们定位看看其中的low与high是什么?
如图:根据这三个常量我们可以知道valueOf方法中if语句的含义:若数据在int范围之内,返回Integer数组中的值
在Java进行自动装箱的时候,包括Byte,Short,Integer,Long四个类,球会在内存中自动创建256个对应类的对象,其中的数值从-128到127
因此在-128到127范围之内的数据都是已经创建好的对象,在获取时不会再创建新的对象
因此你知道下面sout语句打印的答案吗?
②parseInt
paseInt是一个我们比较常用的方法,除了Character类,其他所以包装类都具有parseXxx静态方法,可以将字符串参数转换为对应的基本类型
System.out.println(Integer.parseInt("11"));//十进制下的 11
System.out.println(Integer.parseInt("12",3));//将3进制下的12转换为十进制5
其余方法如图演示:
(二)Character类
Character
类在对象中包装一个基本类型 char
的值。Character
类型的对象包含类型为 char
的单个字段。
此外,该类提供了几种方法,以确定字符的类别(小写字母,数字,等等),并将字符从大写转换成小写,反之亦然。
以下方法不做演示
4.基本数据类型与其包装类之间的来回转换
虽然基本类型与其包装类之间既可以自动转换,也可以我们手动进行转换,但基本类型数组与对应包装类数组的转换却不能自动进行转换,这要我们手动进行转换
若想要知道有没有方法可以让数组进行转换,可以参考下面文章:
https://blog.csdn.net/m0_74808313/article/details/132842634