搜索

首页  >  问答  >  正文

高琪Java视频里,这个将int类型的值直接赋值给Integer对象的语句怎么会通过编译呢?

最近看高琪Java300篇教程,里面有句代码高老师一笔带过了,但是细细看总觉得其中蕴含的知识点不理解,代码如下:

public class Test063 {
    public static void main(String[] args){
    Integer i = Integer.parseInt("234");
    System.out.println(i);
    }
}

第二句Interger.parseInt("234")我查看了源码,

上面明明说parseInt方法返回的是int类型的值,可它怎么能直接赋值给一个Integer对象呢?

我又做了下实验

Integer a = 1;//报错
Integer b = Integer.parseInt("1");//编译通过

结果让我非常懵逼,为什么会这样呢?

萌新求解惑 谢谢!

ringa_leeringa_lee2728 天前997

全部回复(4)我来回复

  • 学习ing

    学习ing2017-06-15 09:23:19

    同萌新,请问你JDK是哪个版本的呢,我在自己的IDE上写Integer i = 1;是没问题的,最近更新到JDK8,但是我想JDK7应该也是可以的,不知道之前的版本对自动装箱的限制是什么。你要不试试看升级一下?

    回复
    0
  • 淡淡烟草味

    淡淡烟草味2017-06-15 09:23:19

    JDK 1.5之后, 有一个自动装包和自动拆包的特性, 会在这种原始数据类型和其对象类型做自动转换, 官方文档:

    https://docs.oracle.com/javas...

    回复
    0
  • 滿天的星座

    滿天的星座2017-06-15 09:23:19

    在JDK1.5以后是可以自动装箱及拆箱的

    回复
    0
  • 巴扎黑

    巴扎黑2017-06-15 09:23:19

    老师的代码是一个自动装箱的过程,Integer是int的包装类.你的JDK版本应该比较老了.

    回复
    0
  • 取消回复