Co je lepší StringBuffer nebo StringBuilder?
Co je lepší StringBuffer nebo StringBuilder?

Video: Co je lepší StringBuffer nebo StringBuilder?

Video: Co je lepší StringBuffer nebo StringBuilder?
Video: #36 StringBuffer and StringBuilder in Java 2024, Smět
Anonim

Řetězec je neměnný, zatímco StringBuffer a StringBuider jsou proměnlivé třídy. StringBuffer je vlákno bezpečné a synchronizované, zatímco StringBuilder není, proto StringBuilder je rychlejší než StringBuffer . Řetězec concat + operátor interně používá StringBuffer nebo StringBuilder třída.

V souladu s tím, který z nich je lepší StringBuffer nebo StringBuilder?

Jako výsledek, StringBuilder je rychlejší než StringBuffer . StringBuffer je proměnlivý. Může se měnit co do délky i obsahu. StringBuffery jsou vláknově bezpečné, což znamená, že mají synchronizované metody pro řízení přístupu, takže pouze jeden vlákno má přístup a StringBuffer synchronizovaný kód objektu najednou.

Podobně, proč je StringBuffer pomalejší než StringBuilder? Objekt vytvořený prostřednictvím StringBuffer je uložen v hromadě. StringBuffer má stejné metody jako StringBuilder , ale každá metoda v StringBuffer je synchronizovaný, tzn StringBuffer je vlákno bezpečné. Tím pádem StringBuilder je rychlejší než a StringBuffer při volání stejných metod každé třídy.

Jaký je tedy rozdíl mezi StringBuffer a StringBuilder?

StringBuilder . StringBuilder je stejný jako StringBuffer , to znamená, že ukládá objekt do haldy a lze jej také upravovat. Hlavní rozdíl mezi a StringBuffer a StringBuilder je to? StringBuilder není vlákno bezpečné. StringBuilder je rychlý, protože není bezpečný pro vlákna.

Kdy bych měl použít StringBuffer?

Pokud se hodnota objektu může změnit a bude přístupná pouze z jednoho vlákna, použití StringBuilder, protože StringBuilder není synchronizován. V případě, že se hodnota objektu může změnit a bude upravena více vlákny, použití A StringBuffer protože StringBuffer je synchronizován.

Doporučuje: