【发布时间】:2021-06-04 07:17:50
【问题描述】:
我有一个 BCD 类,里面有一个构造函数,并从 myArray 创建了一个名为“b”的 BCD 对象。当我更改 myArray 时,为什么 Java 也会更改 b,以及如何使两者“独立”,例如在声明后更改 myArray 时,b 保持不变?
public class BCD{
private int digits;
BCD(int[] digitArray){
digits = digitsArray;
public int nthDigit(int n) {
return digits[n];
}
//more methods
public static void main(String[] args) {
int[] myArray = {1,2};
BCD b = new BCD(myArray);
myArray[1]=3;
System.out.println(b.nthDigit(1));
}
【问题讨论】:
-
你需要克隆阵列。
-
顺便说一句:
digitArray = digits;不可能是正确的,不是digits = digitArray;吗? (并且赋值不会复制数组内的值,它只是使左侧变量包含与右侧相同的对象) -
问题中写的代码无法编译。
-
@user15244370 – 不,这是错误的,至少是句子的第二部分!正确的是:它只是让左边的变量引用与右边的相同的对象。
-
@user15244370 – 抱歉,没有!如果你想对变量使用“包含”,它仍然是对它包含的对象的引用,而不是对象本身。措辞不够精确是提出此类问题的原因!
标签: java constructor