Hirdetés

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

  • floatr
    veterán

    Sziasztok!

    Arra tudtok-e jó és megfelelő leírást, hogy meg tudjam jól tanulni, hogy miért érdemesebb StringBuilderrel .append()-olni a stringeket, mint hogy a '+' -al konkatenáljam össze őket? köszönöm

    Úgy tudom, hogy szűken 1-2 mondatban leírva az append azért jobb, mert nem hoz létre feleslegesen köztes objektumokat a memóriában mint a + csinál, ha például több String-et kell összefűznie. Ha például 4 stringet fűzössze + -al, akkor az első és másodikat összefűzi és lefoglal neki külön memóriát, majd ahhoz fűzi a 3.-at és annak is külön object-et foglal le, mielőtt a 4.-et hozzá fűzné.

    A String egy nem változtatható (immutable) típus. Nem tudsz hozzáadni, nem tudod kicserélni a betűket. Ha összefűzöl/összeadsz két String-et, akkor a JVM létrehoz egy újat a kettőből. Ha ezt a műveletet sokszor végzed el, erőforrás-pazarló és lassú lesz.
    A StringBuilder egy dinamikusan növekvő karaktertömb, aminek előre megmondhatod a kezdő kapacitását, mint egy puffer, aminek a mérete nőhet. Jó esetben nem is kell növelni, ha elég nagy puffert foglaltál le neki. Az összefűzést úgy kezeli, hogy a hozzáadott karaktereket egyenként pakolja a pufferbe, aztán a a toString() metódus hívásakor készít belőle egy végleges értéket.

    Ha konstansokat fűzöl össze összeadással, azt a compiler kioptimalizálja, de bizonyos esetekben helyettesíti StringBuilder-rel is.

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