java.lang.Double cannot be cast to java.lang.Integer
//
import java.lang.Number;//注意加
public class AutoBox
{
public static void main(String []args)
{
int i=100;
double d=10.5;
System.out.println("把基本类型赋值给引用类型会自动装箱");
Integer num1=i;
Double num2=d;
System.out.println("Integer num1="+num1); //100
System.out.println("Double num2="+num2); //10.5
System.out.println("把引用类型赋值给基本类型会自动拆箱");
int j=num1;//相当于int j=num1.intValue(); Integer类型的一个方法
double D=num2;相当于double D=num2.doubleValue(); Double类型的一个方法
System.out.println("int j="+j); //100
System.out.println("double D="+D); //10.5
System.out.println("double赋值给Object");
Object O=d; //double赋值给Object
System.out.println("Object O="+O); //10.5
System.out.println("int赋值给Object");
Object Ob=i; //int赋值给Object
Integer c=(Integer)Ob;
System.out.println("Integer c="+c); //int可以转换为Integer
//double不能强制转换为Integer
try{
Integer b=(Integer)O; //不执行
System.out.println(b);//
}catch(ClassCastException cce){
System.out.println("double不能强制转换为Integer,所以使用Number辅助");
Number n=(Number)d;
Integer b=n.intValue();//Number的静态方法
System.out.println("Integer b="+b); //结果为10,丢失了精度,原本是10.5
}
}
}