如何将`int`视为数组中的对象

时间:2016-03-30 18:06:46

标签: java arrays

正如大多数人所知,当你int[]保持int类型的变量时,当你更改它所持有的int变量时,数组不会更新数据类型是复制而不是指向。有没有办法让这种情况发生呢?可能

Integer int[] = new Integer[] {Integer f1...};

我希望能够制作int[],但当我更改程序中其他位置的变量时,它们也会在int[]内更改。

2 个答案:

答案 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
}