对象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];
将对对象的引用存储在变量
arreglo
中abs
数组的索引0处。如果随后更改数组中的元素,则abs
变量仍将引用先前的对象。这个
System.out.println(abs);
打印第一个元素,然后执行
System.out.println(abs);
再次打印一次。