相关疑难解决方法(0)

当我在类的构造函数中声明并初始化它们时,为什么我的字段初始化为null或默认值为零?

这是针对类似问题的规范性问题和答案,其中问题是由阴影引起的.


我在我的类中定义了两个字段,一个是引用类型,另一个是基本类型.在类的构造函数中,我尝试将它们初始化为一些自定义值.

当我稍后查询这些字段的值时,它们返回Java的默认值,null对于引用类型,0表示基元类型.为什么会这样?

这是一个可重复的例子:

public class Sample {
    public static void main(String[] args) throws Exception {
        StringArray array = new StringArray();
        System.out.println(array.getCapacity()); // prints 0
        System.out.println(array.getElements()); // prints null
    }
}

class StringArray {
    private String[] elements;
    private int capacity;
    public StringArray() {
        int capacity = 10;
        String[] elements;
        elements = new String[capacity];
    }
    public int getCapacity() {
        return capacity;
    }
    public String[] getElements() {
        return elements;
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望getCapacity()返回值10并getElements()返回正确初始化的数组实例.

java constructor field

6
推荐指数
1
解决办法
871
查看次数

标签 统计

constructor ×1

field ×1

java ×1