构造函数的目的是初始化字段的值,设置对象的初始状态。那么,如果某些字段或所有字段未在构造函数中初始化,会发生什么?
是否在用户定义的构造函数之前调用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);
}
}
答案 0 :(得分:6)
类级字段(实例或静态字段)获得分配给它们的默认值。这意味着,如果构造函数或实例(或静态)初始化块未显式初始化这些字段,则将保留默认值。
在您的情况下:
class Name{
int x; //default value for int is 0
boolean y; //default value for boolean is false
换句话说,您的输出应为0, false
This question包含有关原始类型的实际默认值的详细信息。对于对象数据类型,默认值为null
(另请参见data types documentation)。