包装类和基本数据类型看这个就对了
1.为什么出现包装类
包装类(Wrapper Class):我们知道java是一门面向对象的编程语言,但是java中的基本数据类型却不是面向对象的,他们不具有对象的性质。(例如:java中的数据类型int,double等不是对象,无法通过向上转型获取到Object提供的方法,而像String却可以,只因为String是一个对象而不是一个类型。基本数据类型由于这样的特性,导致无法参与转型,泛型,反射等过程。为了弥补这个缺陷,java提供了包装类。)
为了让基本数据类型也具有对象的特征,就出现了包装类型,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八种基本数据类型对应的类统称为包装类(Wrapper Class),包装类均位于java.lang包。
2.基本数据类型的包装类
基本数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
float | Float |
double | Double |
boolean | Boolean |
除了Integer和Character定义的名称和对应的基本类型差异大,其他六种都是将首字母大写就可以了
Integer,Byte,Float,Double,Short,Long都是Number类的子类。
Character和Boolean都是Object直接子类。
8个类都是final修饰的(不可被继承)。
3.基本数据类型和包装类相互转换
- 基本数据类型—>包装类
通过对应包装类的构造方法实现。
除了Character外,其他包装类都可以传入一个字符串参数构造包装类对象。
boolean bool=false;
Boolean b=new Boolean(bool);
Integer i=new Integer(5);
Integer i2=new Integer(""520a);//NumberFormatException
- 包装类—>基本数据类型
包装类的实例方法xxxValue(); //xxx表示包装类对应的基本数据类型。
int j=i.intValue();
Boolean b1=new Boolean("TRue");//true
boolean b2=b1.booleanValue();
4.jdk1.5开始出现的特性:自动装箱&自动拆箱
自动装箱:可以把一个基本类型的变量直接赋给对应的包装类对象或者Object对象。
自动拆箱:允许把包装类对象直接赋给对应的基本数据类型。
Integer i=3;//装箱
int i2=i;//拆箱
Object obj=new Boolean(false);
5.基本类型和String之间的转换(常用)
- String—>基本类型 除了Character外所有的包装类提供parseXxx(String)静态方法,用于把一个特定的字符串转换成基本数据类型。
- 基本数据类型—>String, String类有静态方法valueOf(),用于将基本数据的变量转换成String类型。
String str="17";
//String--->基本数据类型
int i=Integer.parseInt(str);
//基本数据类型--->String
String s1=String.valueOf(i);