Czasami java mnie zastanawia.
Mam do wykonania ogromną ilość int inicjalizacji.
Jaka jest rzeczywista różnica?
Integer.toString(i)
.new Integer(i).toString()
Integer.toString
wywołuje statyczną metodę w klasie Integer
. Nie potrzebuje ona instancji klasy Integer
.
Jeśli wywołasz new Integer(i)
, utworzysz instancję typu Integer
, która jest pełnym obiektem Java enkapsulującym wartość twojego int. Następnie wywołujesz na niej metodę toString
aby poprosić ją o zwrócenie łańcuchowej reprezentacji jej samej.
Jeśli wszystko, czego chcesz, to wydrukować int
, użyjesz pierwszej metody, ponieważ jest ona lżejsza, szybsza i nie używa dodatkowej pamięci (poza zwróconym ciągiem znaków).
Jeśli chcesz obiekt reprezentujący wartość całkowitą, aby umieścić go na przykład w kolekcji, użyjesz drugiego, ponieważ daje ci on pełnoprawny obiekt do robienia wszystkich rodzajów rzeczy, których nie możesz zrobić z czystym int
.
new Integer(i).toString()
najpierw tworzy (nadmiarowy) obiekt wrappera wokół i
(który sam może być obiektem wrappera Integer
).
Preferowany jest Integer.toString(i)
, ponieważ nie tworzy on żadnych zbędnych obiektów.
new Integer(i).toString();
Ta instrukcja tworzy obiekt Integer, a następnie wywołuje jego metody toString(i)
, aby zwrócić reprezentację String wartości Integer's.
Zwraca obiekt String reprezentujący konkretną liczbę całkowitą **, ale tutaj toString(int)
jest metodą statyczną
.
Podsumowując, w pierwszym przypadku zwraca ona reprezentację łańcuchową obiektów, a w drugim przypadku zwraca reprezentację łańcuchową liczby całkowitej.