Я не можу зрозуміти, як об’єкт створюється неявно.
Приклад:
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;
і так далі.