2013-12-18 2 views
-9

Вопрос: Объект создается на Java с использованием конструктора, и, как мы знаем, нет типа возвращаемого конструктора. Теперь как ссылка объекта указывает на этот адрес объекта?Как создавался объект в java?

Пример:

Class Demo{ 

    private String objName; 

    Demo(String objName){ 
     this.objName = objName; 
    } 

    public static void main(String[] args){ 
     Demo obj1 = new Demo("first"); 
    } 

} 

В примере мы имеем объект obj1, как ссылка на объект получает адрес объекта inernally?

+2

Head First Java –

+0

Ссылки 'obj1' и' obj2' хранятся в * стеке *, а их ссылочный объект находится на * heap *. Что еще нужно знать? Быстрый поиск Google немедленно ответит на ваш вопрос. – GGrec

+2

Все это волшебство происходит из-за 'нового' ключевого слова .. Не' конструктором'. Конструктор не имеет типа возврата, но «новый» имеет –

ответ

2

Почему они не должны? Вы вызываете нового оператора, который резервирует память в кучу. Поэтому естественно, что вы получаете две разные ссылки для obj1 и obj2. Насколько я знаю, делая

this.objName = objName; 

Вы копируете содержимое ObjName в this.objName, потому что строки в Java копируются и не только связаны между собой.

0

Когда встречается оператор new, в куче создается новый экземпляр соответствующего класса. И адрес того же (ссылки) сохраняется в стеке.

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