2015-11-20 3 views
0

Я пытаюсь понять, как следующий код работает:String Object Array Обновлен без знака no =?

ArrayList<String> aInt = new ArrayList<String>(); 
    Object[] bInt = null; 

    aInt.add("1a"); 
    aInt.add("2b"); 
    aInt.add("3c"); 
    aInt.add("4d"); 

    bInt = new String[aInt.size()]; 

    aInt.toArray(bInt); 

    for(int i=0; i < bInt.length; i++){ 
     System.out.println(bInt[i]); 
    } 

Я понимаю, все для линии aInt.toArray (бинт), за исключением; Мой вопрос в том, как bInt действительно обновляется с использованием этого, если вы никогда не делаете bInt = aInt.toString()? Я думал, что java только передает элементы по значению, а не ссылку, поэтому я это заставляю меня в тупике.

Я подтвердил, что оператор System.out.println распечатывает 1a, 2b, 3c и 4d.

Спасибо за вашу помощь

+0

Имя объекта на самом деле является его ссылкой. –

+0

Java передает только значение, но часто передается ссылка на объект. Подумайте об этом как о прохождении указателя. – azurefrog

+0

Что вы думаете, 'toArray' делает? Как вы думаете, какой результат должен быть? Зачем? –

ответ

1

Java делает только пройти по значению, но значение для любого объекта, в том числе тех reprensenting примитивных значений (например, строка и Integer) является actualling передавая значение ссылки.

Итак, объекты логически всегда передаются по ссылке, хотя технически вы можете утверждать, что код проходит по значению.

Например, если вы передаете ссылку на объект другому методу из локальной переменной, локальная переменная из исходного метода не изменится (то есть она будет по-прежнему ссылаться на один и тот же объект после вызова), хотя объект-объект к которому он относится, может быть изменен. Следовательно, часть великой ценности неизменяемых объектов (например, String).

+0

Ah ok. Благодарим вас за подробный ответ. Я так и не понял, как это работает. В этом есть смысл. – xCasper