Java

Какая разница между объектом, экземпляром, ссылке? Прочитайте вопрос полностью...

Какая разница между объектом, экземпляром, ссылке? И какая разница между: int a = 100; Integer b = 100; Integer c = new Integer (100) ??
<<Purgenich>> ****
<<Purgenich>> ****
105
int a = 100; //примитивный тип данных (не объект, не экземпляр, не ссылка)
Integer b = 100; //создание объекта/экземпляра класса Integer при помощи боксинга
Integer c = new Integer (100); //создание объекта/экземпляра класса Integer, через конструктор.
Игорь Кочергин
Игорь Кочергин
351
Лучший ответ
Прочитал полностью и заметил рассогласование в падеже слова "ссылке". Со ссылками в Java всё очень плохо: они присутствуют неявно. Объект - экземпляр класса, класс - проект объекта. По одному и тому же проекту можно создать много объектов. Можно слегка изменить проект... Мне кажется удачной аналогия класс == проект, много становится интуитивно понятно.
В примере Integer b = 100; Integer c = new Integer (100) одно и то же. Создаётся объект класса (класса-оболочки) и с ним можно работать как с объектом: у него есть методы. А int a = 100 - "проклятое наследие прошлого" у "а" нет методов, это не экземпляр класса.
Игорь Михайлов
Игорь Михайлов
66 509
Знаешь что, эти либо очень простой вопрос, либо очень сложный....
Простой ответ, я думаю тебе напишут ...но вот если ты поймешь почему :

Integer a = 100;
Integer b = 300;
System.out.println(100 == a); // true 100 == 100
System.out.println(300 == b); // false 300 !=300
Ты ответишь на сложный :)
<<Purgenich>> **** Можно вопрос.
Нужно создать метод чтобы переменную которую мы передаем менялась в методе. Оно-то так должен выглядеть:
a = 50;
<Вызвали метод> (<параметр а>)
после этого метода а должно быть равно 100;
//Я думаю нужно как-то по ссылке метод реализовать а как не знаю.
Объект, это какой-либо класс, например Cat
Экземпляр - это копия какого либо класса. То есть когда мы пишем Cat cat = new Cat(), мы создаем новый экземпляр класса Cat. Если мы при создании передадим ему значения, то этот экземпляр будет хранить эти данные. Например Cat cat = new Cat(); cat.name = "Barsik";
Таким образом экземпляр класса Cat хранит в себе данные. Но сам объект (наш начальный -класс) не поменялся. Переменные в Java хранят не само значение объекта, а ссылку на какой-то объект. При создании класса Cat cat = new Cat(); Мы создаем переменную типа Cat и в неё помещается ссылка на объект типа Cat; Если мы создадим еще одну переменную Cat cat2; и в приравняем к cat( cat2 = cat;), то мы в переменную cat2 кладем ссылку на экземпляр класса. Получается что две переменных ссылаются на один и тот же экземпляр класса. Надеюсь, что все доходчиво объяснил.
<<Purgenich>> **** я правильно понял: если Cat cat1 = new Cat; cat1.name = "A"; и Cat cat2 = new Cat; cat2.name = "B";
Мы напишем (cat1.name = cat2.name) то будет True, ибо они имеют одну и ту же самую ссылку (Cat cat=new Cat), тоесть экземпляр (копия) один, да?