对象包装器与自动装箱
包装器类引用为null,所以自动装箱可能会抛出一个NullPointerException异常:
Integer n=null;
System.out.println(2*n); //Throws NullPointerException
另外,如果在一个条件表达式中混合使用Interger和Double类型,Interger值就会拆箱,提升为double,再装箱为Double:
Integer n=1;
Double x=2.0;
System.out.println(true?n:x) ;//Prints 1.0
装箱和拆箱是编译器认可的,而不是虚拟机,虚拟机只是执行这些字节码。
使用数值对象包装器好处:可以将某些基本方法放置在包装器中,例如,将一个数字字符串转换成数值
要想将字符串转换成整形,可使用
int x=Interger.parseInt(s);
此外,包装器类不可以用来修改数值参数的方法,Interger对象是不可变的:包含在包装器中的内容不会改变。不能使用这些包装器类创建修改数值参数的方法。
API java.lang.Interger 1.0
int intValue()
以int的形式返回Interger对象的值(在Number类中覆盖了intValue方法)
static String toString(int i)
以一个行的String对象的形式返回给定数值i的十进制表示。
static String toString(int i,int radix)
返回数值i的基于给定radix参数进制的表示。
static int parseInt(String s)
static int parseInt(String s,int radix)
返回字符串s表示的整形数值,给定字符串表示的是十进制的整数(第一种方法),或者是radix参数进制的整数(第二种方法)
static Integer valueOf(String s)
static Integer value Of(String s,int radix)
返回用s表示的整型数值进行初始化的一个新的Interger对象,给定字符串表示的是十进制的整数(第一种方法),会这是radix参数进制的整数(第二种方法)。
API java.text.NumberFormat 1.1
Number parse(String s)
返回数字值,假设给定的String表示了一个数值。