构造函数的目的是初始化字段的值,设置对象的初始状态。那么,如果某些字段或所有字段未在构造函数中初始化,会发生什么情况?
它是否在用户定义的构造函数之前调用 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
(另请参阅数据类型文档(。