创建变量数组

cyv*_*rza 2 java arrays variables

我有一个关于创建变量数组的问题; 如果我创建一个整数类型的变量数组,并且我更改数组之外的那些变量的值,那么数组内的值也会更新?我已经在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]);
Run Code Online (Sandbox Code Playgroud)

我希望的是两个输出(num1nums[0])是相同的,但到目前为止我所遇到的是nums[0]保持不变并且不会更新,有关如何更新此值的任何提示(无需进入并更新它是非常感谢

mer*_*011 5

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);
}
}
Run Code Online (Sandbox Code Playgroud)