首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java在构造函数中初始化整型数组

Java在构造函数中初始化整型数组
EN

Stack Overflow用户
提问于 2011-11-10 00:50:37
回答 6查看 529.1K关注 0票数 96

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

代码语言:javascript
复制
 //some code
 private int[] data = new int[3];
 //some code

然后在我的构造函数中:

代码语言:javascript
复制
public Date(){
    data[0] = 0;
    data[1] = 0;
    data[2] = 0;
}

如果我这样做,一切都会好起来的。默认数据值已初始化,但如果我这样做:

代码语言:javascript
复制
public Date(){
    int[] data = {0,0,0};
}

上面写着:

代码语言:javascript
复制
Local variable hides a field

为什么?

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

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-11-10 00:55:01

代码语言:javascript
复制
private int[] data = new int[3];

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

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

代码语言:javascript
复制
data = new int[]{0, 0, 0};
票数 188
EN

Stack Overflow用户

发布于 2011-11-10 01:07:52

你可以这样做:

代码语言:javascript
复制
public class Data {
    private int[] data;

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

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

代码语言:javascript
复制
public class Data {
    private int[] data = new int[]{0, 0, 0};

    public Data() {
        // data already initialised
    }
}

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

票数 9
EN

Stack Overflow用户

发布于 2011-11-10 00:52:50

为什么不简单地

代码语言:javascript
复制
public Date(){
    data = new int[]{0,0,0};
}

出现错误的原因是因为int[] data = ...声明了一个新变量并隐藏了字段data

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8068470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档