k stringbuilderu to vyzera tak ze tie optimalizacie su dost nepredvidatelne
http://www.code-thrill.com/2012/08/stringbuilder-optimizations-demystified.html
Ad Myth 1.1 - spojenie 2 Stringov je tusim aj v JLS. Necakal som, ze to optimalizuje aj spojenie intu so Stringom. Aj keby to neoptimalizoval, tak sa to vykona raz za beh programu a programator by to nenapisal lepsie = pohoda.
Ad Myth 1.2 - to som pisal pri a+b+c, ze sa tam aj tak pouzije StringBuilder
Ad Myth 2 a Myth 3 - kto by cakal, ze sa to spravi vsetko naraz? Toto bolo ocakavane, lebo v druhom kroku sa vyzaduje String "123456", tak ho on musi vyrobit. Podobne v ostatnych krokoch. Nebude vyrabat StringBuilder, ked od neho chcem String
better safe than sorry ako vravi clanok
Clovek by si mal uvedomit, co od programu chce. Java nie je jasnovidec, ale ked ma presne dane operacie, tak ich splni. Teda jednorazove spojenie Stringov pomocou +, ktore sa priradi vo finalnej podobe do Stringu je prehladnejsie ako StringBuilder.
Ak to potrebuje priradit medzikroky do Stringov, tak sa medzikrok proste prevedie na String a tam uz by som ja pouzil StringBuilder.
z toho vyplyva ze to v jave nie je stymi immutable take jasne
Toto je vec Stringov. Konkretne to spojenie viac statickych Stringov pomocou + je dokonca vec JLS, takze sa to ani zdaleka netyka vsetkych immutable.