Integer i="aaa";
Integer i=integer.valueOf("aaa");
   jdk1.5 以后提供了自动拆箱与自动装箱功能,高手们提供下为什么语句一不能通过而语句二却可以?
是不是只能和相对应的基本类型才可以使用(比如 Integer&&int,Double&&double)

解决方案 »

  1.   

    第一句中,将一个String型的对象赋给Integer型的变量,所以不能通过
    第二句中,Integer的valueOf()方法接收一个String型的参数,所以可以通过编译,但是如果按给出的语句执行,会得到一个运行时异常所以这两种方式都不会得到正确的结果
      

  2.   

    Integer i=10;
    System.out.println(i++);
    这两句就是用的autoboxing  and unboxing 怎么不行?
      

  3.   

    Integer i="aaa"; //这里“aaa”是字符串类型,属于基本类型。编译器直接就判断出来不对了。
    Integer i=integer.valueOf("aaa"); //这里出现的是运行期错误。编译是没有问题的。Integer i=10; 
    System.out.println(i++); 
    这两句没有问题啊,打印出来是10的。如果你想看到11这个值,就应该用++i;
    System.out.println(++i); 
      

  4.   

    Integer i="aaa"; 
    Integer i=integer.valueOf("aaa");
    这个可跟unboxing 和 autoboxing没关系.
    把String转成Integer也会出现异常,好像"1110xxxx" 转成Integer的11110
    "aaa"转成Integer是直接出错的