Więcej
Java int to String - Integer.toString(i) vs new Integer(i).toString()
Czasami java mnie zastanawia.
Mam do wykonania ogromną ilość int inicjalizacji.
Jaka jest rzeczywista różnica?
Integer.toString(i)
.
new Integer(i).toString()
419
3
Integer.toString
wywołuje statyczną metodę w klasieInteger
. Nie potrzebuje ona instancji klasyInteger
.Jeśli wywołasz
new Integer(i)
, utworzysz instancję typuInteger
, 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 wrapperaInteger
).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.