Zdarvím,

vysvětlení v javadoc nestačí? Tahle metoda souvisí s tím, že String se docela často používá a má proto trochu speciální zacházení ze strany překladače i JVM, aby byly Stringy co nejrychlejší.

Protože se dá předpokládat, že bude v aplikaci mnoho Stringů, které budou ve skutečnosti představovat ten samý řetězec, má třída String pool použitých Stringů a v některých případech se snaží místo nového Stringu vrátit String z tohoto poolu, pokud už tam existuje. intern() dělá právě to, že uloží String do tohoto poolu, nebo pokud už tam jiný String se stejným obsahem je, vrátí ten String z poolu.

Ten speciální případ, kdy s používá pool, je, když vytvoříte nový String pomocí literálu v Javě, tedy např.

String helloWorld = "HelloWorld";

Metoda intern() tedy slouží k uložení do poolu pro případ, že String vznikl nějak jinak.

Celé to má význam pro ušetření paměti a urychlení porovnání Stringů (metodou equals()). Když vytvoříte dva Stringy se stejným obsahem

String helloWorld = "HelloWorld";
String helloWorld2 = "HelloWorld";

bude to ve skutečnosti jen jeden objekt (ušetří se paměť). Při porovnání na equals() se nejprve porovná identita (==) a teprve pokud nesouhlasí, porovnává se znak po znaku. Takže opět, pokud jde o dva stejné objekty, porovnání na identitu je rychlejší.

Filip Jirsák

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? :)



--
Filip Jirsák
[EMAIL PROTECTED]

Odpovedet emailem