Java在构造函数中初始化一个int数组

Fav*_*las 82 java

我有一个班级,在那个班级我有这个:

 //some code
 private int[] data = new int[3];
 //some code
Run Code Online (Sandbox Code Playgroud)

然后在我的构造函数中:

public Date(){
    data[0] = 0;
    data[1] = 0;
    data[2] = 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我这样做,一切都很好.默认数据值已初始化但如果我改为:

public Date(){
    int[] data = {0,0,0};
}
Run Code Online (Sandbox Code Playgroud)

它说:

Local variable hides a field
Run Code Online (Sandbox Code Playgroud)

为什么?

什么是在构造函数中初始化数组的最佳方法?

谢谢

Bhe*_*ung 167

private int[] data = new int[3];
Run Code Online (Sandbox Code Playgroud)

这已经将数组元素初始化为0.您不需要在构造函数中重复这一点.

在你的构造函数中它应该是:

data = new int[]{0, 0, 0};
Run Code Online (Sandbox Code Playgroud)


pil*_*rth 7

你可以这样做:

public class Data {
    private int[] data;

    public Data() {
        data = new int[]{0, 0, 0};
    }
}
Run Code Online (Sandbox Code Playgroud)

哪个data在构造函数中初始化,或者:

public class Data {
    private int[] data = new int[]{0, 0, 0};

    public Data() {
        // data already initialised
    }
}
Run Code Online (Sandbox Code Playgroud)

data在执行构造函数中的代码之前初始化.