我有一个班级,在那个班级里我有这个:
//some code
private int[] data = new int[3];
//some code
然后在我的构造函数中:
public Date(){
data[0] = 0;
data[1] = 0;
data[2] = 0;
}
如果我这样做,一切都会好起来的。默认数据值已初始化,但如果我这样做:
public Date(){
int[] data = {0,0,0};
}
上面写着:
Local variable hides a field
为什么?
在构造函数中初始化数组的最佳方式是什么?
发布于 2011-11-10 00:55:01
private int[] data = new int[3];
这已经将数组元素初始化为0。你不需要在构造函数中重复这一点。
在你的构造函数中,它应该是:
data = new int[]{0, 0, 0};
发布于 2011-11-10 01:07:52
你可以这样做:
public class Data {
private int[] data;
public Data() {
data = new int[]{0, 0, 0};
}
}
它在构造函数中初始化data
,或者:
public class Data {
private int[] data = new int[]{0, 0, 0};
public Data() {
// data already initialised
}
}
它在执行构造函数中的代码之前初始化data
。
发布于 2011-11-10 00:52:50
为什么不简单地
public Date(){
data = new int[]{0,0,0};
}
出现错误的原因是因为int[] data = ...
声明了一个新变量并隐藏了字段data
但是,需要注意的是,数组的内容已经初始化为0(int
的默认值)
https://stackoverflow.com/questions/8068470
复制相似问题