基元类型/对象声明, 默认初始化值

4

在声明基本类型/对象时,它们会被初始化吗?

默认值是什么?

对于类成员和局部字段,行为如何?

类成员的对象声明呢?


如下所述,这些是默认值:

Data Type - Default Value (for fields)

byte  0
short 0
int   0
long  0L
float 0.0f
double    0.0d
char  '\u0000'
String (or any object)    null
boolean   false
请注意,对象被初始化为null

1
在JavaSE中也将为0。 - Aviram Segal
第一段代码中的int是类成员,而第二段代码中的int是局部变量,这就是它们的区别。 - Aviram Segal
1个回答

5
< p > int 的默认值是0,无论是在JavaSE还是JavaEE中,除非它被赋予另一个值。

你不能有未初始化的int类成员(或任何其他基本类型)。

在你的例子中,你展示了int是一个类成员,在另一个例子中它是一个局部变量,这就是区别。

对于类成员,JVM会放置默认的值,而对于局部变量,它会要求你在访问变量之前分配和初始化一个值。

你可以查看Primitive Data TypesDefault Values部分以获取有关类成员默认值的更多信息。


JVM 是否也会调用对象类成员的默认构造函数呢? - jacktrades
1
不,这只适用于原始类型,请参见此处(默认值)。 - Aviram Segal
我必须补充说明,所有的对象默认都被初始化为 null - jacktrades
啊,你说得对,抱歉,我一时混淆了null和未初始化。 - Aviram Segal
float[] hello = new float[1] // 为什么需要这个初始化。请帮我一下。 - Pravinraj Venkatachalam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接