1. 什么是包装类
There are, however, reasons to use objects in place of primitives, and the Java platform provides wrapper classes for each of the primitive data types. These classes "wrap" the primitive in an object.不论怎样,总有理由使用对象代替原始数据类型,并且 Java 平台为每种原始数据类型提供了包装类。 这些类将“ 原始数据类型 ” 包装在对象中。
2. 自动装箱和拆箱
自动装箱
Often, the wrapping is done by the compiler—if you use a primitive where an object is expected, the compiler boxes the primitive in its wrapper class for you.通常,包装是由编译器完成的 - 如果你在期望一个对象的地方使用原始数据类型,则编译器会为你将原始数据类型放入其包装类中
自动装箱方法
包装类名 . valueOf ( 原始数据类型的值 );
示例
// 变量 num 期望获取一个整数对象,但赋值时给定的是一个基本数据类型 int 值,此时编译器将会将 int值5 进行包装// 调用的是 Integer.valueOf(5)Integer num = 5 ;
自动拆箱
Similarly, if you use a number object when a primitive is expected, the compiler unboxes the object for you.类似地,如果在期望使用基本数据类型的情况下使用包装类型,则编译器会为你解包该象。
自动拆箱方法
包装类对象 . xxxValue ();
示例
Integer num = new Integer ( 10 );// 变量 a 期望获取一个基本数据类型的值,但赋值时给定的是一个引用数据类型的对象,此时编译器会将这个引用数据类型// 的对象中存储的数值取出来,然后赋值给变量 a 。调用的是 num.intValue();int a = num ;
3.字符串转数字的方法
- Integer.parseInt("123") 将字符串类型的数字转换为整数
- Long.parseLong("123") 将字符串类型的数字转换为长整数
- Byte.parseByte("13") 将字符串类型的数字转换为字节
- Short.parseShort("13") 将字符串类型的数字转换为短整数
- Float.parseFloat("12.0f") 将字符串类型的数字转换为单精度浮点数
- Double.parseDouble("123") 将字符串类型的数字转换为双精度浮点数
- Boolean.parseBoolean("true") 将字符串类型的布尔值转换为布尔值
示例
int num = Integer . parseInt ( "11" );float f = Float . parseFloat ( "12.5" );short s = Short . parseShort ( "5" );
注意:
如果字符串参数的内容无法正确转换为对应的基本类型,则会抛出 java.lang.NumberFormatException 异常。