Что именно является экземпляром в Java? - PullRequest
45 голосов
/ 26 февраля 2011

В чем разница между объектом, экземпляром и ссылкой? Они говорят, что они должны создать экземпляр для своего приложения? Что это значит?

Ответы [ 10 ]

69 голосов
/ 26 февраля 2011

Объект и экземпляр - это одно и то же .

Лично я предпочитаю использовать слово "экземпляр" при обращении к определенному объекту определенного типа, например "Экземпляр типа Foo ".Но когда мы говорим об объектах вообще, я бы сказал «объекты», а не «экземпляры».

Ссылка либо ссылается на конкретный объект, либо может быть пустой ссылкой.


Они говорят, что должны создать экземпляр для своего приложения.Что это значит?

Они, вероятно, означают, что вы должны написать что-то вроде этого:

Foo foo = new Foo();

Если вы не уверены, какой тип вы должны создать, вам следует обратиться к разработчикамприложение и попросить более полный пример.

11 голосов
/ 26 февраля 2011

«экземпляр приложения» ничего не значит.

«объект» и «экземпляр» - это одно и то же. Существует «класс», который определяет структуру и экземпляры этого класса (полученные с new ClassName()). Например, есть класс Car, и есть экземпляр с различными свойствами, такими как пробег, максимальная скорость, мощность, марка и т. Д.

Ссылка - это, в контексте Java, переменная * - это нечто, указывающее на объект / экземпляр. Например, String s = null; - s является ссылкой, которая в настоящее время не ссылается ни на один экземпляр, но может ссылаться на экземпляр класса String.

* Джон Скит сделал заметку о разнице между переменной и ссылкой. Смотрите его комментарий. Это важное различие в том, как работает Java, когда вы вызываете метод - передача по значению.

Значение s является справочным. Очень важно различать переменные и значения, а также объекты и ссылки.

8 голосов
/ 26 февраля 2011

Я думаю, что Object = Instance. Ссылка - это «ссылка» на Объект.

Car c = new Car();

переменная c хранит ссылку на объект типа Car.

7 голосов
/ 26 февраля 2011

Когда вы используете ключевое слово new, например JFrame j = new JFrame();, вы создаете экземпляр класса JFrame.

Оператор new создает экземпляр класса, выделяя память для нового объекта и возвращая ссылку на эту память.
Примечание: Фраза "создание экземпляра класса"означает то же самое, что и «создание объекта».Когда вы создаете объект, вы создаете «экземпляр» класса, следовательно, «создаете» экземпляр класса.

Посмотрите здесь
Создание объектов


Типы языка программирования Java подразделяются на две категории: primitive types и reference типы.
Типы reference: class типы, interface типыи array типов.
Существует также специальный тип null.
Объект - это динамически создаваемый экземпляр типа class или динамически создаваемый array.
Значениятип reference - это ссылки на объекты.

См. Типы, значения и переменные для получения дополнительной информации

5 голосов
/ 24 сентября 2012
Computer c= new Computer()

Здесь объект создается из класса Computer.Ссылка с именем c позволяет программисту получить доступ к объекту.

4 голосов
/ 17 мая 2012

Основное различие заключается в том, что вы говорите ClassName obj = null; вы просто создаете объект для этого класса. Это не экземпляр этого класса.

Этот оператор просто выделит память для статических переменных meber, а не для обычных переменных-членов.

Но когда вы говорите ClassName obj = new ClassName (); вы создаете экземпляр класса. Это состояние выделит памяти все переменные-члены.

3 голосов
/ 08 июля 2015

в основном объект и экземпляр - это два слова, используемые взаимозаменяемо. Класс является шаблоном для объекта, а объект является экземпляром класса.

1 голос
/ 16 июня 2016

Буквальное значение экземпляра - «пример или единичное вхождение чего-либо». что очень близко к терминологии Instance in Java.

Java следует за динамической загрузкой, которая не похожа на язык C, где весь код копируется в RAM во время выполнения. Давайте запишем это на примере.

   class A
    {
    int x=0;
    public static void main(String [] args)    
     {
    int y=0;
    y=y+1;
    x=x+1;
     }   

    }

Давайте скомпилируем и запустим этот код.

шаг 1: javac A.class (создается файл .class, представляющий собой байт-код)

шаг 2: Java A (файл .class преобразуется в исполняемый код)

На шаге 2 основной метод и статические элементы загружаются в оперативную память для выполнения. В приведенном выше сценарии нет проблем, пока линия y = y + 1. Но всякий раз, когда выполняется x = x + 1, возникает ошибка времени выполнения, так как JVM не знает, что такое x, объявленный вне основного метода (нестатический).

Итак, если каким-то образом содержимое файла .class доступно в памяти для выполнения ЦП, проблем больше нет.

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

" Концепция резервирования памяти в ОЗУ для содержимого жесткого диска (здесь .class-файл) во время выполнения называется Instance "

Объект также называется экземпляром класса.

1 голос
/ 28 июля 2013

"создание экземпляра класса" как насчет "вы берете класс и создаете новую переменную этого класса, которая БУДЕТ изменяться в зависимости от изменяемого ввода"

Класс в библиотеке под названием Начо

переменная Libre для хранения «экземпляра», который изменится

Nacho Libre = new Nacho (Переменная, вход для сканера или что-то еще здесь. Это место, в котором принимаются изменения, затем помещается значение в «Libre» слева от знака равенства (вы знаете, «Nacho Libre =»). новый Начо (Scanner.in) "" Начо Либре "находится слева от = (это не технический разговор, это мой способ объяснить это)

Я думаю, что это лучше, чем говорить "экземпляр типа" или "экземпляр класса". На самом деле дело в том, что его просто нужно детализировать подробнее ... "экземпляр типа или класса" недостаточно хорош для начинающего ..... вау, это как скороговорка, а твой мозг не может сосредоточиться на скороговорках очень хорошо ... это слово "экземпляр" очень раздражает, и один лишь его звук сводит меня с ума ... оно требует большей детализации ... оно требует лучшего разбора. Я должен был гуглить, что означает «экземпляр», просто чтобы разобраться в моих словах… попробуйте сказать «экземпляр класса» своей бабушке .... yikes!

0 голосов
/ 28 мая 2017

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

- Определение взято из книги «Самс научит себя Java за 21 день».

Скажем, у вас есть 2 класса, открытый класс MainClass и публичный класс Class_2 и вы хотите сделать экземпляром Class_2 в MainClass.

Это очень простой и простой способ сделать это:

public MainClass()      /*******this is the constructor of MainClass*******/

{

 Class_2 nameyouwant = new Class_2();

}

Надеюсь, это поможет!

...