Hirdetés

Új hozzászólás Aktív témák

  • WonderCSabo
    félisten

    (#4241) Superhun : sb.replace(0,sb.length,"x"); Tudom nem szép....

    (#4243) modder : Nyilván mindenre azt lehet mondani, hogy "attól függ..."
    Én alapvetően erre a helyzetre akartam reagálni.:
    String s = "egy";
    ...
    s = "ketto"; // innentől kezdve ott ül a memóriában elérhetetlenül, hogy "egy" ami majd egyszer ki lesz takarítva.
    Amíg ez egyszer van addig oké nem nagy érvágás...de alkalmazás szinten már halmozódhat a dolog. Nem törvényszerű nyilván...

    A példa amit írtál az kicsit erőltetett...egy szóval nem mondtam, hogy String helyett általánosan StringBuilder-t kell használni...pláne nem olyan helyzetben amit vázoltál. Ha tudom, hogy lesz egy szövegem ami nem fog megváltozni akkor persze String, de ha valamivel "műveleteket" szeretnék végezni akkor StringBuilder.

    Tévedsz, Javában a string literálok nem úgy műkődnek, mint az egyéb sima objektumok. Ezek egy String poolba kerülnek. Amikor létrehozol egy új string literált, akkor a JVM megnézi, hogy benne van-e már az a string a poolban, és ha igen, akkor nem hoz létre új objektumot, hanem egyszerűen referál a már meglévőre. A garbage collector ezeket a stringeket nem is fogja bántani csak úgy, különben elveszik az újrafelhasználás lehetősége.

    A StringBuildert pedig nem kell feltétlenül használni, mert egyrészt sokkal természetesebb a plusz operátor, másrészt úgyis StringBuilderre fordul a + operátor...

Új hozzászólás Aktív témák