如果在构造函数中没有或仅初始化某些字段会发生什么

时间:2018-09-20 05:15:30

标签: java

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

是否在用户定义的构造函数之前调用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);
     }

 }

1 个答案:

答案 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)。