正如大多数人所知,当你int[]
保持int
类型的变量时,当你更改它所持有的int
变量时,数组不会更新数据类型是复制而不是指向。有没有办法让这种情况发生呢?可能
Integer int[] = new Integer[] {Integer f1...};
我希望能够制作int[]
,但当我更改程序中其他位置的变量时,它们也会在int[]
内更改。
答案 0 :(得分:5)
绝对不能使用int[]
。您可以创建自己的可变整数类来执行此操作,或者滥用AtomicInteger
来执行此操作。
AtomicInteger[] array = new AtomicInteger[5];
array[0] = new AtomicInteger(6);
array[0].set(4);
System.out.println(array[0].get()); // returns 4
答案 1 :(得分:1)
适用于所有类型的简单方法是使用包含1个元素数组的数组。
int[][] pos = new int[3][1];
int[] x = new int[] { 3 };
int[] y = new int[] { 4 };
int[] z = new int[] { 0 };
pos[0] = x;
pos[1] = y;
pos[2] = z;
x[0] = 42; // Translate in x direction
System.out.println( "x=" + pos[0][0] ); // Prints "42"
但是,通常最好定义一个为访问器和mutator提供有意义名称的类。
public class Position {
private x, y, z;
public int x() { return x; }
public setX( int x0 ) { x = x0; }
... etc
}