java - 数组 "r"的值更新为 2?

标签 java arrays static static-methods

“为什么 r 的值会变成 2 2 而我正在改变,在另一个函数中也是如此?”

class Ideone {// main
    public static void main(String[] args) throws java.lang.Exception {
        int[] r = new int[2];
        for (int i = 0; i < r.length; i++)
            System.out.println(r[i]);
        int[] catch1 = doesThisWork(1, 2, r);
        // the value of r changes!?
        for (int i = 0; i < r.length; i++)
            System.out.println(r[i]);
    }// doesthisWork

    public static int[] doesThisWork(int a, int b, int[] re) {
        for (int i = 0; i < re.length; i++) {
            re[i] = b;
        }
        return re;
    }
}

最佳答案

doesThisWork 接受对 r 数组的引用,这意味着它能够更改该数组的内容。虽然为方法内的 re 变量分配新值不会在方法返回时更改 r 的值(因为 Java 是按值传递语言),但re 引用的对象的状态(在您的情况下是一个数组)会影响 r 的状态,因为 r >re引用同一个对象。

关于java - 数组 "r"的值更新为 2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30690541/

相关文章:

c++ - 无效使用功能错误

java 连接两个字符串错误

java - 如何在 Kotlin Native 中导入 Java 包

java - 如何计数并阻止在另一个线程上执行的 Observable?

java - 我无法阻止 null 显示在 java 中的一维数组的输出中

python - Numpy:使用掩码数组的条件求和行

java - 在 Java 中追加整数数组元素

java - String对象是什么时候创建的?

c++ - 在实例之间的类成员函数内分离静态变量

iphone - iphone 上 Objective C 中的静态字符串变量