Ahoj,
je to presne tak. Nasledujuci kod:
String helloWorld = "HelloWorld";
String hello = "Hello";
String world = "World";
System.out.println(helloWorld == (hello + world).intern());
vypise true. Metoda intern existuje z optimalizacnych dovodov (vid
http://en.wikipedia.org/wiki/String_intern_pool).
Ales
Ing. Jan Novotný wrote / napísal(a):
Nejsem si jistý, ale nezajistí se touto metodou, že konkrétní string
bude na haldě pouze jednou? Tzn. že je teoreticky možné toto:
String a = "ahoj";
String b = "ahoj";
if (a != b) System.out.println("a different from b"); //mohlo by se
vypsat
a.intern();
b.intern();
if (a == b) System.out.println("a same as b"); //musí se vypsat
Nejsem si tím jistý, ale myslím, že takhle to funguje ... equals
samozřejmě vrátí v obou případech true (imlementace equals u stringu
myslím interně to intern právě volá).
Honza
Kamzik-II napsal(a):
Zdravim diskuzi, mam opet jeden zacatecnicky dotaz :)
Tentokrat by me zajimalo, jake vyuziti ma metoda intern ()
tridy java.lang.String, zaujalo me tohle:
String helloWorld = "HelloWorld";
String hello = "Hello";
String world = "World";
helloWorld == ( hello + world ).intern ();
mohl by mi nekdo vysvetlit k cemu je tato
metoda dobra? :)