我正在尝试创建一个参数中有 int 的对象,即将值发送到另一个类,将 int 的值设置为另一个类的构造函数中的私有(private) int ,并使用私有(private) int 来设置大小一个数组,但我不工作...有人知道为什么吗?下面是我的意思的示例,我想将数组大小设置为 10。
main class: Car bmw = new Car(10);
Car class: public Car (int x)
{ y = x;}
private int y;
private String[] carArray= new String[y];
最佳答案
代码的问题:private String[] carArray= new String[y];
将在构造函数主体之前执行。在您的情况下,y
仍将为 0(这是原始字段的默认值),这会导致创建长度为 0 的数组。
因此你必须这样做:
public Car (int x) {
y = x;
carArray= new String[y];
}
基本上调用顺序是:
- 父类(super class)的初始化 block /构造函数(如果有)
- 此类的初始化 block
- 此类的构造函数
示例:假设我们有 Car 类扩展了 Vehicle
。
如果您调用 new Car(10)
,调用顺序可能如下所示(假设没有调用其他构造函数:
车辆
初始化 block车辆
构造函数汽车
初始化 block汽车
构造函数
“初始化 block ”由类主体中的所有内容组成,但不是方法的一部分(实际上有 2 个初始化 block :一个静态初始化 block 和一个实例初始化 block ,静态初始化 block 可以通过 static 来标识
关键字)。
关于Java 数组和构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39748167/