2012-04-20 17 views
1

我已经看遍了互联网,试图解决这个问题。任何人都可以正确回答并解释原因吗?非常感谢!关于第二种说法,下列哪项是正确的? (开箱&自动装箱)

看下面的代码。

Integer myNumber; 
myNumber = 5; 

关于第二个陈述,下列哪项是正确的?

  1. 声明进行拆箱

  2. 的语句执行autowrapping。

  3. 该声明执行自动装箱。

  4. 它会导致错误,因为您无法将基本类型 分配给包装类对象。

+0

这功课吗? – Jeffrey 2012-04-20 00:29:34

+1

什么是自动包装? – dfb 2012-04-20 00:30:44

+2

@spinning_plate不确定自动套接,但自动敲击是在JVM节拍盒时。我现在要走了... – corsiKa 2012-04-20 00:31:52

回答

5

这将被认为是自动装箱。它需要int5并将其放入Integer对象中。

拆箱将是int myInt = myNumber,因为它将Integer分配给int。 (请注意,自动装箱与拆箱相反,从技术上说,拆箱和装箱是相反的。自动装箱是JVM为我们处理拳击的时候。手动装箱的方式(这不是一个字,而是裸露在身上...... )是myNumber = Integer.valueOf(5);

Autowrapping似乎是一个由长期由你的教授来欺骗您。

有些语言会在这样的情况下抛出异常。Java那样在大多数类似的情况,但对于原语它具有特殊的例外

1

这取决于你使用的是什么版本的Java,如果它是1.5之前的任何版本,第二个语句会导致编译时错误。自动装箱的概念只有我从Java 1.5引入。

因此,如果它是Java 1.5及以上版本,则第二条语句执行自动装箱。