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 tatometoda dobra? :)
--
Filip Jirsák
[EMAIL PROTECTED]
