例如,如果您有一个整数:
int i = 9;
它怎么能做到这一点?我的意思是完整的语法是:
int i = new Integer(9);
它如何跳过整个新的 Integer() 部分并且仍然有效?
谢谢。
它不会跳过它,因为原语不是对象。
您的第二行代码涉及auto-unboxing,这是后来添加到 Java 语言中的。
new Integer()
不是原始的;这是一个盒装的原语。
实际的原语(int
等)不是对象,不能被实例化。
请注意,您也可以编写 Integer x = 9
,Java 编译器将隐式插入new Integer()
。
这称为自动装箱。
也许你想看看AutoBoxing
Primitive : Reference Mapping
byte : Byte
short : Short
int : Integer
long : Long
float : Float
double : Double
bool : Boolean
char : Character
自动装箱/拆箱是基本类型与其等效对象类型之间的自动转换。例如,int 基元和 Integer 对象之间或布尔基元和布尔对象之间的转换。这是在 Java 5 中引入的。
基元和对象是两个不同的东西。如果没有原语,您将无法创建像这样的 Integer 对象(Integer在构造函数中new Integer(9)
使用原语)。9
如果它问为什么你的问题会更有意义
Integer i = 9;
没有工作new
,然后答案将是“由于 Java 5 中引入的原语的自动装箱”。所以也许这就是你真正想问的:)