学习包装类之前,要先了解数据的基本类型
让基本数据类型拥有属性方法,将其“装箱”,就成为了包装类。包装类是最终类,不可以被其他类继承。
数值型对应的包装类继承于Number类
字符型和布尔型都是继承于Object类
包装类的定义
包装类除了由基本数据类型“装箱”实现外,也可以直接定义
public class TestDemo {
String name="乌龙";
Integer age=2;
Integer paw=new Integer(4);
Double height=Double.valueOf(25);
Double weight;
定义包装类对象,既可以像成员变量一样书写,也可以像实例化对象一样书写,还可以利用包装类.valueOf() 的方法将基本类型数据作为参数变成包装类对象
TestDemo cat=new TestDemo();
cat.age=3;
System.out.println(cat);
改变age的值后,随意定义一个对象并将其输出
可以看出,即使作为类,依旧存在成员变量的作用,而age也变成了修改后的数值,虽然是最终类,但是可以改变数值。而没有赋值的weight,则输出为null
所有的包装类初始值都为null
装箱
基本数据类型转换为包装类的过程就是装箱,装箱可以分为自动装箱和手动装箱,这两种方式区别不大,可以忽略。
int num1=12;
定义一个基本数据类型num1,赋值12
//自动装箱
Integer num2=num1;
//手动装箱
Integer num3=new Integer(num1);
分别装箱
拆箱
包装类转换为基本数据类型的过程便是拆箱,与装箱过程相同,拆箱也分为自动拆箱和手动拆箱。
Integer num4=12;
定义一个包装num4,赋值12
//自动拆箱
int num5=num4;
//手动拆箱
int num6=num4.intValue();
手动拆箱即在Value前加上基本数据类型构成手动拆箱的方法
字符串和基本数据类型之间的转换
int n1=2;
String n2=Integer.toString(n1);
定义一个基本数据类型,将基本数据类型作为参数传入包装类.toString() 的方法,将其转换为字符串类型,
int n3=Integer.parseInt(n2);
int n4=Integer.valueOf(n2);
两种将字符串类型转换为基本数据类型的方法:
1.将字符串类型对象作为参数传入包装类.parse基本数据类型() 的方法,直接将字符串转换为基本数据类型。
2.将字符串类型对象作为参数传入包装类.valueOf() 的方法,将字符串转换为包装类,再由系统自动拆箱为基本数据类型。
缓存池(对象池)
除了Float和Double,其他包装类在定义时,都会用到缓存池。
定义包装类时,如果参数在-128到127之间,则会直接产生,如果不在这个范围内,则会实例化产生。
“==”双等号的两头如果是对象,则会判断对象所知的空间而不是空间里的内容。我们使用这个符号来证实缓存池的作用。
Integer one=100;
Integer two=100;
Integer three=200;
Integer four=200;
System.out.println("one==two的结果:"+(one==two));
System.out.println("three==four的结果:"+(three==four));
产生这样的结果是因为,当包装类对象one在缓存区中建立了参数100之后,two就可以直接从缓存区使用,两个对象指向的就都是缓存区,即一块空间。而three建立的参数200不在范围内,所以和four分别实例化, 建立两块空间。
注意: 包装类对象和基本类型的数值进行==判断时,包装类对象会自动拆箱后进行熟知的比较。
System.out.println("one==100的结果:"+(one==100));