我有一个关于创建变量数组的问题;如果我创建一个整数类型的变量数组,并且在数组外部更改了这些变量的值,那么数组内部的值也会更新吗?我已经在eclipse中尝试过了,但似乎没有用(请参见下面的代码)
int num1 = 1;
int num2 = 2;
int num3 = 3;
int [] nums = {num1, num2, num3};
num1++;
System.out.println(num1);
System.out.println(nums[0]);
我希望两个输出(
num1
和nums[0]
)相同,但是到目前为止,我一直在体验nums[0]
保持不变并且不会更新,有关如何操作的任何提示最好将此值更新(无需输入和更新) 最佳答案
Java的int
类型是值类型,而不是引用类型,因此在创建数组时,会将旧的int
的值复制到数组中。因此,更改原始副本(阵列外部)不会更改阵列内部的独立副本。
要实现所需的行为,可以使用Erwin的解决方案,或者必须创建自己的包装器类以实现间接的附加值,但不幸的是,它非常冗长。
class IntWrapper {
public int value;
public IntWrapper(int i) {
value = i;
}
}
class Main{
public static void main(String[] args) {
IntWrapper num1 = new IntWrapper(1);
IntWrapper num2 = new IntWrapper(2);
IntWrapper num3 = new IntWrapper(3);
IntWrapper[] nums = {num1, num2, num3};
num1.value++;
System.out.println(num1.value);
System.out.println(nums[0].value);
}
}