Java 构造函数没有初始化变量

Java 构造函数没有初始化变量,java,constructor,Java,Constructor,以下是输出(以我为例): "0 18" 但通常情况下,类checks的对象“checks”会在18初始化类checks的变量n,但这不会发生 public class Connect6 { int n; public Connect6(int n) { this.n = n; } Checks checks = new Checks(n); public void place() { Terminal.printL

以下是输出(以我为例): "0 18" 但通常情况下,类checks的对象“checks”会在18初始化类checks的变量
n
,但这不会发生

public class Connect6 {
    int n;

    public Connect6(int n) {
        this.n = n;
    }


    Checks checks = new Checks(n);


    public void place() {
        Terminal.printLine(checks.getN());
        Terminal.printLine(n);
    }
}
这是Check类(类
main
只是初始化一个对象
Connect6
,并调用方法
place
):


Checks检查=新检查(n)
Connect6
构造函数的主体之前执行,因此
n
此时仍然为0。在初始化
n
之后,应该在
Connect6
构造函数内创建
Checks
实例

改变

public Connect6(int n) {
    this.n = n;
}


Checks checks = new Checks(n);


Checks检查=新检查(n)
Connect6
构造函数的主体之前执行,因此
n
此时仍然为0。在初始化
n
之后,应该在
Connect6
构造函数内创建
Checks
实例

改变

public Connect6(int n) {
    this.n = n;
}


Checks checks = new Checks(n);


当您键入
int n
,它的值不是
null
它是
0

查看
默认值
段落


当您键入
int n时,默认
int
值为
0

,它的值不是
null
它是
0

查看
默认值
段落


默认的
int
值是
0

检查对象在构造函数调用之前是否已初始化

正确的代码应如下所示:

public class Connect6 {
    int n;
    Checks checks;

    public Connect6(int n) {
        this.n = n;
        this.checks = new Checks(n);
    }

    public void place() {
        Terminal.printLine(checks.getN());
        Terminal.printLine(n);
    }
}

检查对象在构造函数调用之前是否已初始化

正确的代码应如下所示:

public class Connect6 {
    int n;
    Checks checks;

    public Connect6(int n) {
        this.n = n;
        this.checks = new Checks(n);
    }

    public void place() {
        Terminal.printLine(checks.getN());
        Terminal.printLine(n);
    }
}

在哪里初始化类Connect6并调用方法place?class main,我没有发布。在哪里初始化类Connect6并调用方法place?class main,我没有发布。