我正在尝试使两个数组索引引用内存中的同一点



所以我当前的代码是:

int x = 5;
int[] one = new int[1];
one[0] = x;     
int[] two = new int[1];
two[0] = x;
x = 10;
System.out.println(one[0]);
System.out.println(two[0]);

这里的目标是获得两个 10 的输出。相反,我得到的是打印的两个5。

我知道在C++有一种方法可以说&x来引用引用类型,但是我不知道Java中有什么类似的东西?

如果有人能在这里帮助我,我将不胜感激。

编辑

干杯伙计们。我最终创建了自己的类并使用它。

class Ideone { 
    public static void main (String[] args) throws java.lang.Exception 
    { 
        MyTester x = new MyTester();
        x.i = 5;
        MyTester[] one = new MyTester[1];
        one[0] = x;
        MyTester[] two = new MyTester[1];
        two[0] = x;
        x.i = 10;
        System.out.println(one[0].i);
        System.out.println(two[0].i); 
    } 
} 
class MyTester 
{ 
    public MyTester() {} 
    public int i;   
}

不,不行。 你能做的最接近的事情是说one = two,然后one[0] = 10,然后two会指向与one相同的数组并反映更改。

但是,您不能仅使用裸露的原始人做这样的事情。

它无法按预期工作,因为它是按值调用的。有一篇很好的老文章,有很多很好的例子可以阅读:Java是"按引用传递"还是"按值传递"?

最新更新