2013-03-05 2 views
0

У меня есть массив на Java, который заполнен данными. То, что я хочу знать, если я что-то вроде этого:Java - меняющиеся указатели меняют значения?

int[] array = new int[2]; 
array[0] = 0; 
array[1] = 1; 

//other statements... 

array[1] = array[0]; 

и если я снова изменить значение array[1], будет значение array[0] изменения, а? Спасибо!

+4

Вы попробовали? –

+0

Нет, поскольку ints являются примитивами, а не указателями на объекты – Patashu

ответ

3

, и если я снова изменю значение массива [1], изменится ли значение массива [0]?

No. Это утверждение:

array[1] = array[0]; 

всего копирует значение второго элемента в первый элемент. Это так же, как если бы у вас было две отдельные переменные:

int x = 10; 
int y = x; 
// Further changes to x don't affect y 

То же также правда - но более тонко - если у вас есть массив ссылок, например, Заявление

StringBuilder[] builders = new StringBuilder[10]; 
builders[0] = new StringBuilder("Original"); 
builders[1] = builders[0]; 
builders[0] = new StringBuilder("Hello"); 
System.out.println(builders[1]); // Prints Original 

Последнее назначение не изменить значение builders[1] ... но если вместо этого мы написали:

builders[0].append("Foo"); 
System.out.println(builders[1]); // Prints OriginalFoo 

то значения builders[0] и builders[1] не изменились - они все еще ссылаются на один и тот же объект, но содержимое изменило объект, следовательно, выход в конечной строке.

Смежные вопросы