Čo je lepšie StringBuffer alebo StringBuilder?
Čo je lepšie StringBuffer alebo StringBuilder?

Video: Čo je lepšie StringBuffer alebo StringBuilder?

Video: Čo je lepšie StringBuffer alebo StringBuilder?
Video: ЛЮБОВЬ С ДОСТАВКОЙ НА ДОМ (2020). Романтическая комедия. Хит 2024, November
Anonim

Reťazec je nemenný, zatiaľ čo StringBuffer a StringBuider sú meniteľné triedy. StringBuffer je vlákno bezpečné a synchronizované, zatiaľ čo StringBuilder nie je, preto StringBuilder je rýchlejší ako StringBuffer . Reťazec concat + operátor interne používa StringBuffer alebo StringBuilder trieda.

V súlade s tým, ktorý z nich je lepší StringBuffer alebo StringBuilder?

Ako výsledok, StringBuilder je rýchlejší ako StringBuffer . StringBuffer je premenlivý. Môže sa meniť z hľadiska dĺžky a obsahu. StringBuffers sú bezpečné pre vlákna, čo znamená, že majú synchronizované metódy na riadenie prístupu tak, že iba jeden vlákno má prístup a StringBuffer synchronizovaný kód objektu naraz.

Podobne, prečo je StringBuffer pomalší ako StringBuilder? Objekt vytvorený cez StringBuffer je uložený v hromade. StringBuffer má rovnaké metódy ako StringBuilder , ale každá metóda v StringBuffer je synchronizovaný, tj StringBuffer je vlákno bezpečné. Teda StringBuilder je rýchlejší než a StringBuffer pri volaní rovnakých metód každej triedy.

Aký je teda rozdiel medzi StringBuffer a StringBuilder?

StringBuilder . StringBuilder je rovnaký ako StringBuffer , to znamená, že ukladá objekt do haldy a môže byť tiež modifikovaný. Hlavný rozdiel medzi a StringBuffer a StringBuilder je to StringBuilder nie je bezpečný pre vlákna. StringBuilder je rýchly, pretože nie je bezpečný pre vlákna.

Kedy by som mal použiť StringBuffer?

Ak sa hodnota objektu môže zmeniť a bude prístupná iba z jedného vlákna, použitie StringBuilder, pretože StringBuilder nie je synchronizovaný. V prípade, že sa hodnota objektu môže zmeniť a bude upravená viacerými vláknami, použitie a StringBuffer pretože StringBuffer je synchronizovaný.

Odporúča: