В Java есть две разные вещи:
1) Ссылочная переменная
2) Объект
Ссылочная переменная: Хранится в стекеони могут содержаться в других объектах (тогда они на самом деле не переменные, а поля), что также помещает их в кучу. Это переменная, которая указывает на некоторый объект в памяти.
Объект: Объекты хранятся в памяти кучи. Это экземпляр класса, который создается динамически.
Здесь, в вашем коде obj
и obj1
являются ссылочными переменными. Когда вы делаете fun obj=new fun()
, вы создаете класс Object of fun, и объект obj указывает на этот объект в памяти. И в следующей строке, когда вы вызываете fun obj1=obj
, теперь obj1
также указывает на тот же объект, на который указывает obj.
Так что технически оба указывают на одну и ту же память в куче. obj == obj1
будет оценено как true
.
Примечание: Ссылка и определение объекта ссылка .
(Спасибо pshemo за эту информацию) И ссылка, и переменная ссылки - это не одно и то же. Ссылка (по крайней мере, в Java) - это уникальный номер, присваиваемый каждому объекту, который может использоваться для его поиска JVM. Переменная-ссылка - это переменная типа, которая может хранить ссылки (как их значения).