Mi a különbség a két deklaráció között? (JAVA)
String elso = "alma";
String masodik = new String ("alma");
Java nyelven a két sor ugyan azt csinálja, egy String objektumot készít és egy referenciához rendeli.
Java nyelven a String osztály elemi típusként viselkedik, ennek oka, hogy a string használata legalább olyan gyakori és elemi mint mondjuk az int vagy a double. Ez csupán kódbeli különbség, a byte kód mind a kettő esetben megegyezik, tehát az első sor úgy viselkedik mint a második.
FYI:
C#-ben ez hasonlóképpen van.
C++-ban viszont a két deklaráció között komoly különbség van, az első a stackben hoz létre egy lokális objektumok, amire a scope (hatáskör) végén destruktor hívódik. A második pedig a heap-ben hoz létre egy objektumot és egy mutatót ad vissza, amit nekünk kell felszabadítanunk. Tehát még a típusa sem egyezik sem a kettőnek. C++-ban is van referencia, de teljesen más módszertan szerint működik.
Van különbség, ajánlom mindenki figyelmébe:
#4 Végre egy helyes komment.
Ha érdekel, keress rá "java string interning"-re.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!