如果在构造函数中不初始化任何字段或仅初始化某些字段,会发生什么情况



构造函数的目的是初始化字段的值,设置对象的初始状态。那么,如果某些字段或所有字段未在构造函数中初始化,会发生什么情况?

它是否在用户定义的构造函数之前调用 JVM 提供的默认构造函数?

那么,在这个例子中,输出什么?

class Name{
int x;
boolean y;

Name(){
// no initialize
}
public static void main(){
Name n = new Name();
System.out.println(n.x + ", " + n.y);
}
}

类级字段(实例或静态字段(获取分配给它们的默认值。这意味着,如果构造函数或实例(或静态(初始化块未显式初始化这些字段,则将保留默认值。

在您的情况下:

class Name{
int x;     //default value for int is 0
boolean y; //default value for boolean is false

换句话说,您的输出应该是0, false

此问题详细介绍了基元类型的实际默认值。对于 Object 数据类型,默认值为null(另请参阅数据类型文档(。

最新更新