Что означает класс obj = obj1; - PullRequest
0 голосов
/ 15 октября 2019

У меня есть класс, подобный

public class fun{

     abc(){//.some code.//}

}

, а в каком-то методе main есть код, подобный

fun obj = new fun();
fun obj1 = obj;

Пожалуйста, помогите мне объяснить объект в main как класс доступа.

Ответы [ 2 ]

0 голосов
/ 15 октября 2019

Вы отправили этот код как метод main:

fun obj = new fun();
fun obj1 = obj;

В первой строке делается несколько вещей ...

  • new fun(); вызывает конструктор класса fun (который отдельно вы должны использовать заглавную "F", чтобы следовать стандартным соглашениям об именах Java). Это создаст новый экземпляр класса fun, поэтому будет один объект fun.

  • fun obj = ..., который определяет переменную с именем obj, которая содержитссылка на объект fun. Альтернативой может быть String s, который будет определять переменную s, которая ссылается на String объект. Кроме того, после выполнения этой строки obj будет указывать на фактический объект Java, созданный путем вызова new fun();.

Вторая строка:

  • создает новую переменную - obj1 - которая ссылается на fun объект

  • указывает obj1 на тот же базовый объект, который obj указывает на

Итак, в итоге у вас есть один объект - вещь, созданная из new fun() - и две переменные, которые ссылаются на тот же объект.

0 голосов
/ 15 октября 2019

В Java есть две разные вещи:

1) Ссылочная переменная

2) Объект

Ссылочная переменная: Хранится в стекеони могут содержаться в других объектах (тогда они на самом деле не переменные, а поля), что также помещает их в кучу. Это переменная, которая указывает на некоторый объект в памяти.

Объект: Объекты хранятся в памяти кучи. Это экземпляр класса, который создается динамически.

Здесь, в вашем коде obj и obj1 являются ссылочными переменными. Когда вы делаете fun obj=new fun(), вы создаете класс Object of fun, и объект obj указывает на этот объект в памяти. И в следующей строке, когда вы вызываете fun obj1=obj, теперь obj1 также указывает на тот же объект, на который указывает obj.

Так что технически оба указывают на одну и ту же память в куче. obj == obj1 будет оценено как true.

Примечание: Ссылка и определение объекта ссылка .

(Спасибо pshemo за эту информацию) И ссылка, и переменная ссылки - это не одно и то же. Ссылка (по крайней мере, в Java) - это уникальный номер, присваиваемый каждому объекту, который может использоваться для его поиска JVM. Переменная-ссылка - это переменная типа, которая может хранить ссылки (как их значения).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...