2 包装类
由于 Object 类是所有对象的父类,因此 Object 类型的引用能够接受 Java 中所有类型的对象。但是,对于基本类型,Object 类就无能为力了,毕竟 Object 只能处理对象类型。有没有什么办法,能够让 Object 类处理 Java 中所有的数据类型呢?在 Java 中解决这个问题的方法就是使用包装类。
2.1包装类简介
包装类是为了把基本类型包装成对象类型,从而能被 Object 类型统一管理。
class MyInteger{
private int value;
public MyInteger(int value){
this.value = value;
}
public int intValue(){
return value;
}
}
这样,我们定义了一个对象类型 MyInteger,这个类型封装了一个 int 类型的 value,从而把一个简单类型 int 类型封装成了一个对象类型。用这个 MyInteger 类的对象,同样可以表示一个整数。
2.2 六种转换
三种类型之间的六种转换。所谓的三种类型,指的是字符串类型、基本类型、包装类类型。
1包装类和基本类型之间的转换
以 Integer 和 int 为例,由 int 转换为 Integer的方式,是利用 Integer 的构造方法,以 int 作为参数创建相应的 Integer 对象。
int i1 = 10;//int 类型转化为 Integer 类型
Integer ii1 = new Integer(i1);
直接调用 Integer 对象的 intValue 方法,用这个方法就可以把 Integer 类型转换为 int 类型
int i2 = ii1.intValue();
2 String 类型与包装类之间的转换
字符串转为包装类类型非常简单,同样是利用包装类的构造方法
String str = “123”;
Integer ii2 = new Integer(str);
包装类类型转为字符串类型也非常简单,直接调用包装类对象的 toString 方法,就能返回该对象的字符串表现形式,也就是把对象转化为字符串。
String str2 = ii2.toString();
3字符串类型和基本类型之间转换
基本类型转换成字符串
一种方式是使用 String 类中定义的一个静态方法:valueOf。因为这个方法是静态方法,因此可以用 String 类名来直接调用。在 String 类中定义了一系列重载的 valueOf 方法,分别表示把不同的基本类型转换为字符串类型。
int i = 10;
String str3 = String.valueOf(i);
第二种方式,我们可以利用字符串的特性,使用字符串加法来完成基本类型和字符串类型之间的转换。
String str4 = “” + i;
由于字符串类型加上任何其他类型,结果都是字符串,因此我们可以用一个空字符串加上一个整数,从而把这个整数转化为一个字符串。
字符串转换成基本类型
以 int 为例,如果要转换的话,可以调用Integer 类的 parseInt 方法,把字符串转化为 int。
int i = Integer.parseInt(“123”);
2.3 JDK5.0 新特性:自动封箱拆箱
在 JDK5.0 中,由系统自动完成基本类型和包装类之间的转换。
//把 int 类型的 10 转换为 Integer 类型
Integer myInteger = new Integer(10);
//把 Integer 类型的 myInteger 转换为 int 类型
int i = myInteger.intValue();
而对于 JDK5.0 以后的版本来说,下面的代码也能编译通过:
//把 int 类型直接赋值给 Integer 类型
Integer myInteger = 10;
//把 Integer 类型直接赋值给 int 类型
int i = myInteger;
上面的这两行代码,可以把 int 类型的变量直接赋值给 Integer 类型,也可以把 Integer类型的变量直接赋值给 int 类型。也就是说,可以对 Integer 类型和 int 类型自动进行转换。需要注意的是,这个新特性只是语法方面的改变,而底层实现的原理,并没有发生改变。