1,包装类的作用
2,包装类的自动装箱,自动拆箱操作
3,包装类的转换操作
在Java中提倡一种思想:一切 皆对象。但是Java的数据类型划分中分为两种:1,基本数据类型,2引用数据类型,引用数据类型是对象也是基于对象的操作,但是基本数据类型并不是对象,这就与设计初衷有了矛盾。
包装类的作用就是解决这个矛盾的。
那么问题来了,如何解决这个矛盾呢,如何进行包装呢?
实现包装
Java中的8种基本数据类型并不是对象,将这些基本数据类型包装,就是将这8种基本数据类型变成一个类的形式,这样就可以以对象的形式操作这些基本数据类型。
在jdk的API中查找一下这8种包装类的父类,看看他们都是什么
Boolean
public final class Boolean
extends Object
implements Serializable, Comparable<Boolean>
Character
public final class Character
extends Object
implements Serializable, Comparable<Character>
数值类型的
Byte
public final class Byte
extends Number
implements Comparable<Byte>
Short
public final class Short
extends Number
implements Comparable<Short>
Integer
public final class Integer
extends Number
implements Comparable<Integer>
Long
public final class Long
extends Number
implements Comparable<Long>
Float
public final class Float
extends Number
implements Comparable<Float>
Double
public final class Double
extends Number
implements Comparable<Double>
发现他们都是继承自Number,我们看看Number的继承结构
public abstract class Number
extends Object
implements Serializable
Number类提供了返回这6种基本数据类型的操作,但是Number是抽象类,这些方法都是抽象方法。
Number类是一个抽象类,主要是将数字包装类中的内容变为基本数据类型。通过以上的对应方法,得到对应的基本数据类型值。
拆箱:
将包装类类型变为基本数据类型称为拆箱
装箱:
将基本数据类型变为包装类称为装箱。
public class WrapperDemo01{
public static void main(String args[]){
int x = 30 ; // 基本数据类型
Integer i = new Integer(x) ; // 装箱:将基本数据类型变为包装类
int temp = i.intValue() ;// 拆箱:将一个包装类变为基本数据类型
}
};
public class WrapperDemo02{
public static void main(String args[]){
float f = 30.3f ; // 基本数据类型
Float x = new Float(f) ; // 装箱:将基本数据类型变为包装类
float y = x.floatValue() ;// 拆箱:将一个包装类变为基本数据类型
}
};
然而在jdk1.5版本之后,可以自动装箱,自动拆箱了,而不用再根据构造方法和对应的value方法进行装箱和拆箱了。
public class WrapperDemo03{
public static void main(String args[]){
Integer i = 30 ; // 自动装箱成Integer
Float f = 30.3f ; // 自动装箱成Float
int x = i ; // 自动拆箱为int
float y = f ; // 自动拆箱为float
}
};
也可以直接将一个字符串的数据变为基本数据类型了。
public class WrapperDemo04{
public static void main(String args[]){
String str1 = "30" ; // 由数字组成的字符串
String str2 = "30.3" ; // 由数字组成的字符串
int x = Integer.parseInt(str1) ; // 将字符串变为int型
float f = Float.parseFloat(str2) ; // 将字符串变为int型
System.out.println("整数乘方:" + x + " * " + x + " = " + (x * x)) ;
System.out.println("小数乘方:" + f + " * " + f + " = " + (f * f)) ;
}
};
public class WrapperDemo05{
public static void main(String args[]){
int x = Integer.parseInt(args[0]) ; // 将字符串变为int型
float f = Float.parseFloat(args[1]) ; // 将字符串变为int型
System.out.println("整数乘方:" + x + " * " + x + " = " + (x * x)) ;
System.out.println("小数乘方:" + f + " * " + f + " = " + (f * f)) ;
}
};