Wrapper包装类
包装类又叫封装类,Java的数据类型有两种,基础数据类型是基础的,从狭义的角度看它们不是面向对象的,在引用数据类型中,有八个引用数据类型对应了八个基础数据类型,这个八个引用数据类型就叫做基础数据类型的封装类。
封装类是final修饰的类,不能被继承。
1、包装类【掌握】
六个基础数据类型的封装类都是它们的首字母大写,只有int的封装类是Integer,char的封装类是Character。
基础数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
2、自动装箱和自动拆箱【掌握】
基础数据类型和它的封装类是不同的数据类型,而且是两种体现,基础数据类型的封装类是不可以直接赋值的,但是从JDK5开始,优化了这部分开发的简便性,基础数据类型和它的封装类可以相互赋值。这个语法被称为自动装箱和拆箱。
public class testInteger {
public static void main(String[] args) {
/*基础数据类型赋值*/
int i1 = 1;
/*封装类赋值,用的是自动装箱*/
/*在JDK5之前版本,应用写成:*/
/*Integer i2 = new Integer(2);*/
/*否则报错*/
Integer i2 = 2;
/*封装类赋值,用的是自动装箱*/
Integer i3 = i1;
/*自动拆箱,将封装类赋值给基础数据类型*/
i1 = i2;
}
}
3、包装类的缓存分析【记忆】
Integer有缓存机制,这个缓存区的范围是byte的范围,在这个范围内的数据用基础数据类型表示,地址是相同的,超出范围会用封装类创建新的对象,地址就不相同了。
public static void testInt(){
Integer i1 = 1;
Integer i2 = 1;
System.out.println("i1 == i2 --> " + (i1 == i2));
System.out.println("i1.equals(i2) --> " + i1.equals(i2));
Integer i3 = 1;
Integer i4 = new Integer(1);
System.out.println("i3 == i4 --> " + (i3 == i4));
System.out.println("i3.equals(i4) --> " + i3.equals(i4));
Integer i5 = 128;
Integer i6 = 128;
System.out.println("i5 == i6 --> " + (i5 == i6));
System.out.println("i5.equals(i6) --> " + i5.equals(i6));
}
i1 == i2 --> true
i1.equals(i2) --> true
i3 == i4 --> false
i3.equals(i4) --> true
i5 == i6 --> false
i5.equals(i6) --> true
4、常用方法【记忆】
包装类的常用方法不多,实际工作中还是基础数据类型用的多,而包装类多应用在VO类中。
1、常用方法示例
public static void main(String[] args) {
/*compareTo:只返回三个值:要么是0,-1,1*/
Integer i1 = new Integer(6);
Integer i2 = new Integer(12);
System.out.println(i1.compareTo(i2));
/*intValue() :作用将Integer--->int*/
Integer i3 = 130;
int i = i3.intValue();
System.out.println(i);
/*parseInt(String s) :String--->int:*/
int i4 = Integer.parseInt("12");
System.out.println(i4);
/*toString:Integer--->String*/
Integer i5 = 130;
System.out.println(i5.toString());
}
2、VO类
VO类有称为实体类,用于定义一个程序中管理的实体,例如学生成绩管理系统,可以定义一个Student类
public class Student{
private String name;
private Integer age;
private Double height;
}