Joskus java hämmentää minua.
Minulla on valtava määrä int-alkukirjauksia tehtävänä.
Mikä on todellinen ero?
Integer.toString(i)
new Integer(i).toString()
Integer.toString
kutsuu luokan Integer
staattista metodia. Se ei tarvitse Integerin
instanssia.
Jos kutsut new Integer(i)
, luot tyypin Integer
instanssin, joka on täysi Java-objekti, joka kapseloi int:n arvon. Sitten kutsut sen toString
-metodia pyytämään sitä palauttamaan merkkijonoesityksen itsestään.
Jos haluat vain tulostaa int
:n, käytät ensimmäistä tapaa, koska se on kevyempi ja nopeampi eikä käytä ylimääräistä muistia (palautetun merkkijonon lisäksi).
Jos haluat kokonaislukuarvoa esittävän objektin - esimerkiksi sijoittaaksesi sen kokoelmaan - käytät toista, koska se antaa sinulle täysimittaisen objektin, jolla voit tehdä kaikenlaista, mitä et voi tehdä pelkällä int
-arvolla.
new Integer(i).toString()
luo ensin (tarpeettoman) wrapper-olion i
ympärille (joka voi itse olla wrapper-olio Integer
).
Integer.toString(i)
on parempi, koska se ei luo tarpeettomia objekteja.
new Integer(i).toString();
Tämä lauseke luo kokonaisluvun objektin ja kutsuu sitten sen metodeja toString(i)
palauttaakseen kokonaisluvun arvon merkkijonoesityksen.
Integer.toString(i);
Se palauttaa String-olion, joka edustaa tiettyä int:tä (kokonaislukua), mutta tässä toString(int)
on staattinen
metodi.
Yhteenveto on, että ensimmäisessä tapauksessa se palauttaa objektin merkkijonoesityksen, kun taas toisessa tapauksessa se palauttaa kokonaisluvun merkkijonoesityksen.