3

例如,如果您有一个整数:

int i = 9;

它怎么能做到这一点?我的意思是完整的语法是:

int i = new Integer(9);

它如何跳过整个新的 Integer() 部分并且仍然有效?

谢谢。

4

5 回答 5

9

它不会跳过它,因为原语不是对象。

您的第二行代码涉及auto-unboxing,这是后来添加到 Java 语言中的。

于 2012-06-24T12:53:51.307 回答
7

new Integer()不是原始的;这是一个盒装的原语。
实际的原语(int等)不是对象,不能被实例化。

请注意,您也可以编写 Integer x = 9,Java 编译器将隐式插入new Integer()
这称为自动装箱。

于 2012-06-24T12:53:54.980 回答
3

也许你想看看AutoBoxing

Primitive : Reference Mapping
byte : Byte
short : Short
int : Integer
long : Long
float : Float
double : Double
bool : Boolean
char : Character

自动装箱/拆箱是基本类型与其等效对象类型之间的自动转换。例如,int 基元和 Integer 对象之间或布尔基元和布尔对象之间的转换。这是在 Java 5 中引入的。

于 2012-06-24T12:54:41.207 回答
2

基元和对象是两个不同的东西。如果没有原语,您将无法创建像这样的 Integer 对象(Integer在构造函数中new Integer(9)使用原语)。9

于 2012-06-24T12:55:33.123 回答
2

如果它问为什么你的问题会更有意义

Integer i = 9;

没有工作new,然后答案将是“由于 Java 5 中引入的原语的自动装箱”。所以也许这就是你真正想问的:)

于 2012-06-24T13:55:04.477 回答