java - 我需要一些帮助来理解实例/引用

标签 java class variables reference instance

只是想知道我试图自学的内容是否正确。

我最终会在我的一个程序中得到这样的结果:

public class Test {
    int array[];

    public static void main(String[] args){
        Test test = new Test();
        test.array = new int[10];
        test.fillArray();

        for(int i=0;i<test.array.length;i++)
            System.out.println(test.array[i]);
    }

    public void fillArray(){
        Test test = new Test();
        for(int i=0;i<test.array.length;i++)
            test.array[i]=i;
    }
}

但是我遇到了空指针异常。我似乎经常遇到此类问题。正确规划我的计划是否有助于解决此问题?

空指针是因为当我说new时,它会创建一个仅存在于该方法内部的单独对象,正确吗?

除了像我下面那样将数组设置为静态或给它一个参数(或者它是参数..?)之外,还有其他方法可以解决此问题吗?

public class Test {
    int array[];

    public static void main(String[] args){
        Test test = new Test();
        test.array = new int[10];
        test.fillArray(test.array);

        for(int i=0;i<test.array.length;i++)
            System.out.println(test.array[i]);
    }

    public void fillArray(int a[]){
        for(int i=0;i<a.length;i++)
            a[i]=i;
    }
}

最佳答案

您的第一个 fillArray 存在阴影问题,因为您正在创建一个新的测试实例并初始化它 - 而不是在当前(或 这个)实例,

public void fillArray() {
  // Test test = new Test();
  for (int i = 0; i < this.array.length; i++) {
    this.array[i] = i; // <-- this.array or just array[i]
  }
}

关于java - 我需要一些帮助来理解实例/引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24857171/

相关文章:

java - 单击按钮打开时,新 JFrame 以禁用状态打开

java - 如何让 VSCode 识别 Java 代码中的 Kotlin 类?

javascript - iio Engine游戏开发教程

javascript - 将 $scope 变量传递到带 Angular html 函数标记中

if-statement - ansible 变量中的条件文本

sql - 存储和重用 INSERT ... RETURNING 返回的值

java - Gradle - 获取依赖项的最新版本

java - 未找到元素 : GAVE UP when using expectedconditions with phantomjs

Java,来回移动矩形

c++ - struct 和 class 之间的区别以及为双链表构建节点?