2016-04-16 6 views
-2

Пусть у меня есть класс с именем Ellipse Тогда, какова разница между этими двумя линиямиразница между этими двумя линиями

1-Ellipse ellipse = new Ellipse(); 
2-Ellipse e; 

Я знаю, что на первом, я могу получить доступ ко всем элементам эллипса класса, как это создавая объект класса Ellipse. Но со вторым я могу сделать то же самое

В чем разница между ними. Что я могу сделать из первой строки, а не второй или ViceVersa

+0

Я не получил вас – Begginer

+0

Попытка вызова любых методов на 'e' вызовет' NullPointerException'. – Powerlord

+0

Спасибо, Это имеет смысл – Begginer

ответ

1

Линия 1 & 2: вы объявляете переменные Ellipse, первая переменная называется ellipse переменной и второй, один называется e.

  • Строка 1: вы назначаете жизнеспособный объект или ссылку на переменную эллипса. Теперь вы можете вызвать методы Ellipse для переменной и получить доступ к любым открытым полям.
  • Строка 2: вы не присваиваете что-либо переменной e, и вместо этого она имеет только нулевую ссылку, и вы ничего не можете с ней сделать. Если вы попытаетесь использовать переменную до, назначив ссылку, вы рискуете получить исключение NullPointerException.

Подумайте о переменной, подобной пустой чашке. У вас две чашки, а первая, эллипс, вы наполнили пивом и можете пить от него и быть удовлетворены. Второй, e пуст, и если вы попытаетесь выпить от него, вы будете сильно разочарованы.

+0

Спасибо, Это имеет смысл – Begginer

0

Java не C++, Ellipse e; не выделяет new Ellipse(), это эквивалентно Ellipse e = null; В контракту первый пример строит Ellipse экземпляр и присваивает ссылку на переменную ellipse.

0

Линия 1 - Объявлен и инициализирован новый объект Ellipse и присвоен его переменной эллипсу.

Строка 2, Объявлена ​​переменная e типа Ellipse.

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