小编典典

Java构造函数变量被忽略

java

我正在尝试创建对象Iset的实例。当人创建对象时,他们必须给出一个整数,该整数将是一个布尔数组的大小,该布尔数组将存储一组整数,例如1将是Iset [1]
= true等。但是我一直使索引超出范围错误。程序的其余部分显然会忽略我在构造函数中设置的值,那么如何确保在我的所有方法中都使用构造函数中使用的值?

代码的第一部分:

 public class Iset {
    public int size;
    boolean[] Iset;


    ISet(int a) {
        int size = a;
        seti = new boolean[size];

阅读 258

收藏
2020-11-30

共1个答案

小编典典

让我们看看您的代码:

 public class Iset {
    public int size;// Declares a Member of a class and all the objects will have a copy of this member
    boolean[] Iset;
.....
}


    ISet(int a) {
        int size = a; //This line is declaring a **local variable** called size 
        seti = new boolean[size];
...
}

在构造函数中,您已经看到创建了局部变量,size但是在类中也有一个称为类的成员size
。因此,在这种情况下,每当我们尝试size在构造函数中设置变量时,无论是设置局部变量还是类成员,编译器都会发生冲突(此冲突是因为局部变量和类成员都具有相同的名称)
在这种情况下,编译器会选择局部变量的大小而不是类成员的大小 。但是,要确保在构造函数中使用的值在我的所有方法中都已使用,
则必须设置class member 。要设置类成员,我们使用以下代码:

this.size = a;//Says set the object member size to value present in a.

在这里,我们使用 指针来引用大小, 因为我们需要设置对象的大小变量,而不是局部变量size

2020-11-30