对象Carta具有两个字符串字段:“ Cara”和“ Palo”
像这样的构造函数:

public Carta(String a, String b){Cara = a, Palo = b}


和修改的toString方法:

public String toString(){return Cara+" de "+Palo}


所以如果我这样做:

Carta[] arreglo = {new Carta("a","b") , new Carta("c","d"), new Carta("f","g"), new Carta("h","i") };

Carta abs = arreglo[0];
System.out.println(abs);

arreglo = Arrays.copyOfRange(arreglo,1,arreglo.length);

System.out.println(abs);


为什么我得到此输出:

a de b
a de b


我以为Abs只是对数组arreglo的第一个元素的引用

最佳答案

这段代码

Carta abs = arreglo[0];


将对对象的引用存储在变量arregloabs数组的索引0处。如果随后更改数组中的元素,则abs变量仍将引用先前的对象。

这个

System.out.println(abs);


打印第一个元素,然后执行

System.out.println(abs);


再次打印一次。

10-04 14:10