装箱就是 自动将基本数据类型转换为包装器类型;拆箱就是 自动将包装器类型转换为基本数据类型。
Java的数据类型
基本数据类型的转换
数据类型的转换分为三种:
简单数据类型之间的转换、字符串与其他数据类型的转换、其他实用数据类型的转换。
(1) 简单数据类型的转换。
由低级到高级分别为(byte,short,char)-int-long-float-double.
简单数据类型转换分为自动类型转换、高级到低级的强制类型转换、包装类过渡类型转换。
1) 自动类型转换
1.低级变量可以直接转换为高级变量
例子:
Byte b;
Int i= b;
Long l =b;
Float f = b;
Double d= b;
2.如果低级类型为char型,向高级类型(整型)转换时,会转换为对应的ASCII码。
3.对于byte、short、char三种类型而言,它们是相同级别的,因此,不能相互自动转换,可以使用下述的强制类型转换。
Short I = 99;
Char c = (char)I;
2) 强制类型转换
高级变量转换为低级变量,可能会导致溢出或精度的下降。
3) 包装类过渡类型转换
1.基本数据类型对应的包装器类型。
String和Date本身就是类,不存在包装类的概念。
在进行简单数据 类型之间的转换(自动转换或强制转换)时,可以利用包装类进行中间过渡。一般情况下,首先声明一个变量,然后生成一个对应的包装类,就可以利用包装类的各种方法进行类型转换了。
1.当希望把float型转换为double型时:
Float f1 = 100.00f;
Float F1 = new float(f1);
Double d1 = F1.doubleValue();
2.当希望把int型转换为double型时,自动转换:
Int i1 =200; double d1 = i1;
3.简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。
Boolean(Boolean value)
Character(char value)
Integer(int value)
Long(long value)
Float(float value)
Double(double value)
(2)字符串型与其他数据类型的转换
Characrer、Integer、Float、Double、Boolean、short等类的toString()方法用于将字符、整数、浮点数、双精度数、逻辑数、短整型等类转换为字符串如下所示
public class Test {
public static void main(String[] args) {
int i1 =10;
float f1 = 3.14f;
double d1 = 3.1415926;
Integer I1 = new Integer(i1);
Float F1 = new Float(f1);
Double D1 = new Double(d1);
String si1 = I1.toString();
String sf1 = F1.toString();
String sd1 = D1.toString();
System.out.println("i1类型"+getType(i1));
System.out.println("f1类型:"+getType(f1));
System.out.println("d1类型"+getType(d1));
System.out.println("si1类型:"+getType(String.valueOf(si1)));//返回String
System.out.println("si1" + si1);
System.out.println("sf1" + sf1);
System.out.println("sd1" + sd1);
}
public static String getType(Object o){
return o.getClass().toString();
}
}
查看数据类型。定义一个getType()的方法。或者设置断点调试。
(3)将字符型直接作为数值转换为其他数据类型
将字符型变量转换为数值变量类型实际上有两种对应关系:一种是将其转换成对应的ASCII码;另一种是转换关系,例如,’1’就是指数值1,而不是ASCII码,对于这种转换,可以使用Character的getNumericValue(char ch)方法。
注意:
浮点型常量默认为double,如果要指定单精度浮点数类型请在浮点数后加F(f)。
Byte的数值范围-128~127
(4)面试题
Which of the following will compile correctly? D
A. Short myshort = 99S; C.float z = 1.0;
B. Int t = “abc”.length(); D.char c = 17c;
解析:Short myshort = 99S;这句要执行自动装箱,调用shortValue方法。
在java中length是属性,一般用来说明数组的长度;length()是方法,用来求数组中某个元素的字符串长度。