java - 在Java中初始化对象数组(有一个数组)

标签 java arrays initialization instantiation

我对 java 比较陌生,这只是我第二次尝试设计具有类对象数组的程序。我遇到了麻烦,因为当我进入 Debug模式时,它向我显示数组正在正确构建。但是,当我尝试构建字符串甚至打印到控制台时,我收到了空指针异常。

我正在尝试创建一个 Slot 类对象数组。

public class C {
int slotNum;
Slot[] s;


public C(int byteSize, int slotNum){
    this.slotNum = slotNum;

    Slot[] s = new Slot[slotNum]; //create an array of slots

    for(int i = 0; i < slotNum; i++){ //for every slot and instantiate
        s[i] = new Slot(byteSize); 
    }
    display();
}

Slot 类有自己的数组 block[],由通过其构造函数传入的值构造。

public class Slot {

boolean v;
short block[];

public Slot(int byteSize){
    valid = false;

    //Instantiate each element in block[] to 0
    short block[] = new short[byteSize];
    for(int i = 0; i < block.length; i++){
        block[i] = 0;
    }
}

稍后在程序中,我尝试打印到控制台或构建一个字符串,但当我尝试使用 C 类中 slot[] 中的任何元素时,它总是会中断。

我是否正确实例化并初始化了 2 个不同的数组?

最佳答案

public class C {
int slotNum;
Slot[] s;


public C(int byteSize, int slotNum){
this.slotNum = slotNum;

s = new Slot[slotNum]; //create an array of slots

for(int i = 0; i < slotNum; i++){ //for every slot and instantiate
    s[i] = new Slot(byteSize); 
}
display();
}

尝试类似的方法

public class Slot {

boolean v;
short block[];

public Slot(int byteSize){
valid = false;

//Instantiate each element in block[] to 0
block = new short[byteSize];
for(int i = 0; i < block.length; i++){
    block[i] = 0;
}
}

关于java - 在Java中初始化对象数组(有一个数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33202714/

相关文章:

java - 在抽象类中实现接口(interface)方法

java - DatastoreMutationPool 是否在回调之前刷新到数据存储区?

java - 如何使用 java.util.regex.* 执行部分匹配?

php 返回无效的 json

python - 比较大型数组集

java - EasyMock - 改变 equals() 和其他对象方法的行为

ios - 将Firebase的数据库与Swift 4语言同步

C - 未初始化的指针 -> 指向数组

c - 尝试使用 const 初始化变量时出现错误 "initializer element is not constant"

c++ - "A reference may be bound only to an object",为什么 "const int &ref = 3;"有效?