Junior
В чем отличие между StringBuilder и StringBuffer?
sobes.tech AI
Answer from AI
| Property | StringBuilder | StringBuffer |
|---|---|---|
| Thread safety | Not thread-safe | Thread-safe |
| Performance | Higher | Lower |
| Synchronization | No method synchronization | Methods are synchronized |
| Usage | In single-threaded environments | In multi-threaded environments |
Both classes are designed for modifying character sequences without creating a new string object for each operation. The main difference lies in thread safety and, consequently, in performance.
// Example of using StringBuilder
StringBuilder sb = new StringBuilder("Hello");
sb.append(" ");
sb.append("World");
String result = sb.toString(); // result = "Hello World"
// Example of using StringBuffer
StringBuffer sbf = new StringBuffer("Hello");
sbf.append(" ");
sbf.append("World");
String result = sbf.toString(); // result = "Hello World"
In a multi-threaded environment, using StringBuffer guarantees correct operation when accessed simultaneously from different threads, whereas StringBuilder may lead to unpredictable results (race conditions). In a single-threaded environment, using StringBuilder is preferable due to better performance, as synchronization overhead is absent.