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

我有一个class,我在这个class有这个:

//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 

为什么?

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

谢谢

 private int[] data = new int[3]; 

这已经初始化你的数组元素为0.你不需要在构造函数中再次重复。

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

 data = new int[]{0, 0, 0}; 

你可以做

 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

这是因为在构造函数中,声明了一个与属性名称相同的本地variables。

要分配一个所有元素都被初始化为零的整型数组,在构造函数中写入:

 data = new int[3]; 

要分配一个具有其他初始值的整型数组,请将此代码放在构造函数中:

 int[] temp = {2, 3, 7}; data = temp; 

要么:

 data = new int[] {2, 3, 7}; 

为什么不简单

 public Date(){ data = new int[]{0,0,0}; } 

你得到错误的原因是因为int[] data = ...声明了一个新的variables并隐藏了字段data

但是应该注意,数组的内容已经被初始化为0( int的默认值)

在你的构造函数中,你正在创build另一个int数组:

  public Date(){ int[] data = {0,0,0}; } 

尝试这个:

  data = {0,0,0}; 

注意:顺便说一句,如果声明为实例variables,则不需要初始化数组元素。 实例variables自动获取默认值,对于整数数组,默认值全为零。

如果你有本地声明的数组,虽然他们你需要初始化每个元素。

最好的方法是不写任何初始化语句。 这是因为如果你编写int a[]=new int[3]那么默认情况下,在Java中,所有数组的值a[0]a[1]a[2]都被初始化为0 ! 关于局部variables隐藏字段,请发布您的整个代码,以便我们得出结论。