即使我们有一个构造函数,如何将变量初始化为默认值

Sha*_*shi 3 java constructor default default-constructor

我有一个关于java中的默认构造函数的问题.
尽管我已经阅读了java中的构造函数,但默认构造函数会将所有实例变量初始化为其默认值.但是如果我们为一个类定义一个构造函数,那么如果我们想要它们,变量如何初始化为默认值呢?

假设我有2个文件a.java

public class a
{
    int x;

    public a(int z)
    {
        if(z > 0)
        {
            x = z;
        }
    }

    public  void get()
    {
        System.out.println(x);
    }
} 
Run Code Online (Sandbox Code Playgroud)

和b.java

public class b
{
    public static void main(String[] args)
    {
        a obj = new a(-4);

        obj.get();
    }
}
Run Code Online (Sandbox Code Playgroud)

现在这里条件(z> 0)失败,所以x被初始化为零.但这究竟是什么,因为它们在类a中没有默认构造函数.

jue*_*n d 10

声明但未初始化的字段将由编译器设置为合理的默认值.一般来说,此默认值将为零或null,具体取决于数据类型.

资源

这意味着编译器将在您构建程序时为您执行此操作.