------------《疯狂Java讲义精粹》读书笔记5--------------
Java 是面向对象的语言,它既保留了8中基本数据类型,也提供了8中相对应的包装类(Wrapper Class):
基本数据类型 | byte | short | int | long | char | float | double | boolean |
对应的包装类 | Byte | Short | Integer | Long | Character | Float | Double | Boolean |
8个包装类除了Character之外可以传入相应的值来初始化,也可以传入字符串初始化。
包装类对象和基本类型变量的转化关系如下:
下面用代码说明:
public class TestWrapper {
public static void main(String[] args) {
/**
* 8个包装类除了Character之外可以传入相应的值来初始化,
* 也可以传入字符创初始化。
*/
double d = 0.5;
String str = "123.4";
Double doubleObj1 = new Double(66.6);//直接构建
Double doubleObj2 = new Double(d);//传入对应类型的变量
Double doubleObj3 = new Double("98.9");//传入正确的字符串
Double doubleObj4 = new Double(str);//传入相应的字符串变量
System.out.println(doubleObj1);
System.out.println(doubleObj2);
System.out.println(doubleObj3);
System.out.println(doubleObj4);
/**
* 另外创建Boolean类时true 和 false的大小写不做区分
*/
Boolean blObj = new Boolean("FALsE");
System.out.println(blObj);
/**
* 如果希望获得包装类对象中包装的基本类型变量,可以使用包装类提供的
* xxxValue()实例方法。
*/
//取出doubleObj1中的基本类型变量
System.out.println("\n--------------------");
double d1 = doubleObj1.doubleValue();
System.out.println(d1);
}
}
输出结果为:
66.6
0.5
98.9
123.4
false
--------------------
66.6
很明显这种转换的方式太复杂了,Java1.5之后提供了自动装箱(Autoboxing)和自动拆箱(AutoUnboxing)功能,自动装箱可以把一个基本类型的变量直接赋给对应的包装类变量,或者赋给Object变量;自动拆箱可以把包装类型的对象赋给一个对应类型的基本变量。
下面是一个例子:
/**
* 自动装箱、拆箱
* @author <<疯狂Java讲义精粹>>
*
*/
public class TestAutoBoxingUnboxing {
public static void main(String[] args) {
//直接把一个基本类型的变量赋给integer对象
Integer inObj = 5;
//直接把一个boolean类型的变量赋给一个Object类型变量
Object boolObj = true;
//直接把一个Integer对象赋给int类型变量
int in = inObj;
if(boolObj instanceof Boolean){
//先把Object对象强制转换成Boolean类型,再赋值给boolean变量
boolean b = (Boolean)boolObj;
System.out.println(b);
}
}
}