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?

  1. Integer.toString(i).
  1. new Integer(i).toString()
Rozwiązanie

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.

Komentarze (0)

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.

Komentarze (0)
  1. 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.

    1. Integer.toString(i);`

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.

Komentarze (1)