Nie mogę zrozumieć, w jaki sposób obiekt jest tworzony niejawnie.
Przykład:
String s = "implicit instantiation";
Czy mogę stworzyć własną klasę, której obiekty można tworzyć niejawnie?
Odpowiedzi:
3 dla odpowiedzi № 1Nie, tworzenie instancji ciągu jest domyślnie obsługiwane przez kompilator. Tylko klasy String i Array mają tę właściwość.
String greeting = "Hello world!";
char[] helloArray = { "h", "e", "l", "l", "o", "." };
Autoboxing pozwala na niejawne tworzenie instancji obiektów pierwotnych typów opakowań, ale jest to również specjalny przypadek obsługiwany przez kompilator. Nie można tworzyć własnych klas za pomocą tej zdolności.
Boolean b = false;
Integer i = 0;
Double pi = 3.1416;
1 dla odpowiedzi nr 2
Niestety nie możesz tego zrobić!
w przeciwieństwie do C lub C ++ nie można przeciążać żadnego operatora w języku Java, więc nie ma możliwości zrobienia czegoś takiego
Foo myFoo = 1
w przypadku klasy ciągów:
String s = "implicit instantiation"
czyli dla deweloperów sintax cukru, za kulisami kompilator wykonuje „brudną” pracę i robi coś podobnego (pamiętaj, że istnieje pula ciągów znaków):
String s = new String("implicit instantiation")
To samo dotyczy niektórych innych typów, takich jak tablice lub otoki dla liczb ...
0 dla odpowiedzi № 3
Dla każdej instancji obiektu potrzebujesz Konstruktora i konstruktora, jest to specjalna metoda do konstruowania i inicjalizacji metod. Przykład:
String s; // Is not initialized and it"s nos constructed.
Jak więc zbudować nowy obiekt w Javie? Łatwe dzięki new operator
tworzysz nowy obiekt!
s = new String("qwe"); // New object constructed
Ale tutaj jest coś, co wielu początkujących wpada w zamieszanie. Dlaczego mogę to zrobić:
String s= "asdfasd;"
Bo String
jest szczególnym przypadkiem w Javie i nie trzeba dodawać new operator
jak wszystkie pierwotne zmienne, które są klasami. Przykład:
Integer i = 3;
Double d = 3.3d;
i tak dalej.