/ / Як ява створює об'єкти неявно? Як і у випадку класу String - java, string, objectinstantiation

Як Java створює об'єкти неявно? Як у випадку класу String - java, string, objectinstantiation

Я не можу зрозуміти, як об’єкт створюється неявно.

Приклад:

String s = "implicit instantiation";

Чи можу я створити власний клас, об’єкти якого можна створити неявно?

Відповіді:

3 для відповіді № 1

Ні, компілятор обробляється неявно за допомогою String instanciation. Лише класи String і Array мають цю властивість.

String greeting = "Hello world!";
char[] helloArray = { "h", "e", "l", "l", "o", "." };

Автобоксинг дозволяє імпліцитно створювати об'єкти примітивних типів обгортки, але це "також спеціальний випадок, яким обробляється компілятор. Ви не можете створювати власні класи з цією здатністю.

Boolean b = false;
Integer i = 0;
Double pi = 3.1416;

1 для відповіді № 2

На жаль, ви просто не можете цього зробити!

На противагу C або C ++ ви не можете перевантажувати жодного оператора мовою java, тому немає можливого способу зробити щось на зразок

Foo myFoo = 1

у випадку рядкового класу:

String s = "implicit instantiation"

це цукровий синтаксис для розробників, за лаштунками компілятор виконує "брудну" роботу і робить щось на кшталт (пам’ятайте, є рядок рядків):

String s = new String("implicit instantiation")

Те саме стосується деяких інших типів, таких як масиви або обгортки для номерів ...


0 для відповіді № 3

Для кожного примірника об'єкта вам потрібен Конструктор і його конструктор - спеціальний метод побудови та ініціалізації методів. Приклад:

String s;  // Is not initialized and it"s nos constructed.

Тож як ви конструюєте новий об’єкт у Java? Легко з new operator ви створюєте новий об’єкт!

s = new String("qwe"); // New object constructed

Але ось те, що багато новачків плутається. Чому я можу це зробити:

String s= "asdfasd;"

Оскільки String це особливий випадок на Java, і вам не потрібно додавати new operator як і всі примітивні змінні, які є класами. Приклад:

Integer i = 3;
Double d = 3.3d;

і так далі.