2015-11-15 2 views
0

Я хочу дублировать массив. Как правило, я просто делал бы что-то подобное.Какая разница в этих методах копирования массива в Java?

int[] a1 = {1, 2, 3}; 
int[] a2 = a1 

Однако в последнее время я видел моего профессора сделать это таким образом:

int[] ar1 = {1, 2, 3}; 
int[] ar2 = Arrays.copyOf(ar1); 

Есть преимущество между делать это один из способов над другим? В чем основное отличие?

+0

Почему голос? –

+0

Это довольно легко проверить. Я предполагаю, что голосует от этого. Вы можете использовать [Arrays.copyof] (http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#copyOf (int [],% 20int)) в качестве ссылки для вашего пример. – Emz

ответ

6

В первом случае оба массива указывают на один и тот же объект. Таким образом, модификация изменит и другую.

int[] a1 = {1, 2, 3}; 
int[] a2 = a1 
a1[0] = 15; 
System.out.println(a2[0]); //15 

Во втором случае создается настоящая копия, поэтому ее изменение не повлияет на другую.

int[] a1 = {1, 2, 3}; 
int[] a2 = Arrays.copyOf(a1, 3); 
a1[0] = 15; 
System.out.println(a2[0]); //1 

Если вы хотите получить больше информации о деталях копирования в Java, увидеть второй ответ на How do I copy an object in Java?

+0

Понял, спасибо! –

+0

@OmarN Второй ответ на http://stackoverflow.com/questions/869033/how-do-i-copy-an-object-in-java предоставляет намного больше информации о копировании на Java, если вам интересно :) – tixopi

2

Я полностью согласен с постом @ tixpoi, но я думаю, что это правильное место, чтобы добавить, что первый пример из вас называется мелкой копии, а «настоящая копия» называется глубокой копией.

+0

Благодарим за информацию! Я новичок в Java и не знаю. –

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