/ / Jak java domyślnie tworzy obiekty? Podobnie jak w przypadku klasy String - java, string, objectinstantiation

Jak niejawnie tworzyć obiekty w java? Podobnie jak w przypadku klasy String - java, string, objectinstantiation

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 № 1

Nie, 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.