什么是包装类
每个基本数据类型对应一个包装类
包装类对象就是基本数据类型的对象形式
基本数据类型 | 基本类型 | 父类 |
---|---|---|
int | java.lang.Integer | java.lang.Number |
long | java.lang.Long | java.lang.Number |
double | java.lang.Double | java.lang.Number |
short | java.lang.Short | java.lang.Number |
float | java.lang.Float | java.lang.Number |
byte | java.lang.Byte | java.lang.Number |
char | java.lang.Character | java.lang.Object |
boolean | java.lang.Boolean | java.lang.Object |
为什么需要包装类
基本数据类型不能直接参与引用类型的使用或计算
使用包装类将基本数据类型转换为引用数据类型,可以参与到其他引用类型的使用
包装类的使用
包装类与基本数据类型的转换
package com.tedu.pack;
/**
* 包装类
* 包装类是为了解决基本数据类型值不能作为对象参与程序开发的问题的
* 有了包装类,就可以将数值放入对应的包装类中,既转换为对象爱的形式
* 所有的包装类都是在java.lang包下
* 包装类的名称,除了int和char都是首字母大写即可
* int----->Integer
* char--->Character
* @author Wildmess
*
*/
public class IntegerDemo1 {
public static void main(String[] args) {
int n1 = 100;
int n2 = 129;
/*
* 基本数据类型转换为包装类对象
*/
Integer i1 = Integer.valueOf(n1);
Integer i2 = Integer.valueOf(n1);
System.out.println(i1 == i2 );
/*
* Integer中有一个1字节的缓存
* 如果值在-128~127之间,直接用缓存保存,否则才是对象形式
*/
Integer i3 = Integer.valueOf(n2);
Integer i4 = Integer.valueOf(n2);
System.out.println(i3 == i4 );
Double d1 = Double.valueOf(n1);
Double d2 = Double.valueOf(n1);
System.out.println(d1 == d2 );//false
System.out.println(d1.equals(d2));
/*
* 包装类转换为基本数据类型
*/
int m1 = i1.intValue();
System.out.println(m1);
int m2 = i3.intValue();
System.out.println(m2);
double dd = d1.doubleValue();
System.out.println(dd);
byte b1 = i1.byteValue();
byte b2 = i3.byteValue();
System.out.println(b1);
System.out.println(b2);//溢出
}
}
包装类的功能
package com.tedu.pack;
/**
* 展示包装类中常用的功能和转换时发生的异常
* @author Wildmess
*
*/
public class IntegerDemo2 {
public static void main(String[] args) {
//获得int类型的最大值
int imax = Integer.MAX_VALUE;
System.out.println(imax);
//获得int类型的最小值
int imin = Integer.MIN_VALUE;
System.out.println(imin);
//获得long类型的最大值
long lmax = Long.MAX_VALUE;
System.out.println(lmax);
//将String转化为int类型
//1、
String s = "123";
int d1 = Integer.valueOf(s);
System.out.println(d1);
//PS:
//将字符串转换为数值类型的时候可能发生转换异常
//NumberFormatException
//故要使用这种方法,必须保证s中的都是int类型的数据
//2、(推荐)
int d2 = Integer.parseInt(s);
System.out.println(d2);
}
}
自动装箱
package com.tedu.pack;
/**
* 装箱:将基本数据类型的数值,存放在对应它的包装类中
* 拆箱:从包装类对象中,获得这个基本数据类型的数值
* JDK1.5时,Java编译器就可以自动拆装箱了
* 为了简化开发时基本数据类型和其包装类的转换
* @author Wildmess
*
*/
public class IntegerDemo3 {
public static void main(String[] args) {
int a = 1;
/*
* 这里触发了自动装箱特性,编译器咋i编译时
* 会将这里的代码改为:
* Integer i = Integer.valueOf(a);
* 将基本数据类型转换为包装类
*/
Integer i = a;
/*
* 下面代码触发了自动拆箱特性,编译器会改为:
* a = i.intValue();
* 将包装类转换为对应的基本类型
*/
a=i;
}
}