包装类
为了让基本数据类型也具备对象的特性,Java 为每个基本数据类型都提供了一个
包装类,这样我们就可以像操作对象那样来操作基本数据类型。对应如下:
基本类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Int |
long | Long |
float | Float |
double | Double |
char | Char |
boolean | Boolean |
包装类与基本类型之间的转换
基本类型外覆成封装类的操作称为“装箱”,封装类转换成基本类型的操作称为“拆箱。
eg.
/*装箱*/
int a = 1;
Integer x = a; //方式一: 自动装箱
Integer y = new Integer(a); //方式二:手动装箱
/*拆箱*/
Integer a = new Integer(5);
int x = a; //方式一:
int y = a.intValue(); //方式二:手动拆箱
包装类提供的关于值的方法
- valueOf( 数据类型 data )
- xxxValue( ) // xxx代表基本类型
关于这两个方法,需要注意:
- valueOf() 方法是静态方法,可直接通过类名调用;而xxxValue() 方法是非静态方法,只能通过相应类的对象调用。
- xxxValue()方法的返回值为基本类型,而valueOf()方法的返回值为引用类型,即返回其包装类的一个对象。
由上述两点,
double num = 0.5;
double x = Math.floor(num);
int result_one = (int) num ; //正确
int result_two = (int)Double.valueOf(x) ; //报错
关于int result = (int)Double.valueOf(x)这句,Double.valueOf(x)
返回一个Double的对象,是不能被(int)Double.valueOf(x)这样强制转换为int基 本类型的。
若要转换,必须先将该Double对象转成基本类型,再强制转换为int型。
//eg.
double tmp = Double.valueOf(x);
int result_two = (int) tmp;