Java 这是否返回了引用或新对象?
对象Carta有两个字符串字段:“Cara”和“Palo” 构造函数,如:Java 这是否返回了引用或新对象?,java,methods,reference-type,Java,Methods,Reference Type,对象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"),
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
a de b
a de b
我以为abs只是对arreglo数组的第一个元素的引用
Carta abs = arreglo[0];
将对对象的引用存储在变量abs
中arreglo
数组的索引0处。如果随后更改数组中的元素,则abs
变量仍在引用上一个对象
这个
打印第一个元素,然后执行以下操作
System.out.println(abs);
再打印一次。这段代码
Carta abs = arreglo[0];
将对对象的引用存储在变量abs
中arreglo
数组的索引0处。如果随后更改数组中的元素,则abs
变量仍在引用上一个对象
这个
打印第一个元素,然后执行以下操作
System.out.println(abs);
再打印一次。这段代码
Carta abs = arreglo[0];
将对对象的引用存储在变量abs
中arreglo
数组的索引0处。如果随后更改数组中的元素,则abs
变量仍在引用上一个对象
这个
打印第一个元素,然后执行以下操作
System.out.println(abs);
再打印一次。这段代码
Carta abs = arreglo[0];
将对对象的引用存储在变量abs
中arreglo
数组的索引0处。如果随后更改数组中的元素,则abs
变量仍在引用上一个对象
这个
打印第一个元素,然后执行以下操作
System.out.println(abs);
再打印一次
为什么我会得到这个输出:
a de b
a de b
a de b
a de b
我以为abs只是对arreglo数组第一个元素的引用
abs
它是对Carta
实例的引用。不适用于阵列arreglo
。因此,当您不修改该实例时,abs
仍然是相同的对象状态。您正在做的是为referencearreglo
分配一个新数组
为什么我会得到这个输出:
a de b
a de b
a de b
a de b
我以为abs只是对arreglo数组第一个元素的引用
abs
它是对Carta
实例的引用。不适用于阵列arreglo
。因此,当您不修改该实例时,abs
仍然是相同的对象状态。您正在做的是为referencearreglo
分配一个新数组
为什么我会得到这个输出:
a de b
a de b
a de b
a de b
我以为abs只是对arreglo数组第一个元素的引用
abs
它是对Carta
实例的引用。不适用于阵列arreglo
。因此,当您不修改该实例时,abs
仍然是相同的对象状态。您正在做的是为referencearreglo
分配一个新数组
为什么我会得到这个输出:
a de b
a de b
a de b
a de b
我以为abs只是对arreglo数组第一个元素的引用
abs
它是对Carta
实例的引用。不适用于阵列arreglo
。因此,当您不修改该实例时,abs
仍然是相同的对象状态。您正在做的是为referencearreglo
分配一个新数组。您已经说过System.out.println(abs)代码>两次。它应该做什么?你说的是System.out.println(abs)代码>两次。它应该做什么?你说的是System.out.println(abs)代码>两次。它应该做什么?你说的是System.out.println(abs)代码>两次。它应该做什么?