Nội dung chính
Sự khác nhau giữa StringBuffer và StringBuilder trong java
Sự khác nhau giữa StringBuffer và StringBuilder trong java được thể hiện trong bảng sau:
| No. | StringBuffer | StringBuilder |
| 1) | StringBuffer là đồng bộ (synchronized) tức là luồng an toàn. Điều này có nghĩa là không thể có 2 luồng cùng truy cập phương thức của lớp StringBuffer đồng thời. | StringBuilder là không đồng bộ (non-synchronized) tức là luồng không an toàn. Điều này có nghĩa là có 2 luồng cùng truy cập phương thức của lớp StringBuilder đồng thời. |
| 2) | StringBuffer không hiệu quả bằng StringBuilder. | StringBuilder hiệu quả hơn StringBuffer. |
Ví dụ về StringBuffer trong java
public class BufferTest {
public static void main(String[] args) {
StringBuffer buffer = new StringBuffer("hello");
buffer.append("java");
System.out.println(buffer);
}
}
Output:
hellojava
Ví dụ về StringBuilder trong java
public class BuilderTest {
public static void main(String[] args) {
StringBuilder builder = new StringBuilder("hello");
builder.append("java");
System.out.println(builder);
}
}
Output:
hellojava
Test hiệu suất của StringBuffer và StringBuilder trong java trong java
public class ConcatTest {
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
StringBuffer sb = new StringBuffer("Java");
for (int i = 0; i < 100000; i++) {
sb.append("Hello");
}
System.out.println("Thời gian nối chuỗi của StringBuffer: "
+ (System.currentTimeMillis() - startTime) + "ms");
startTime = System.currentTimeMillis();
StringBuilder sb2 = new StringBuilder("Java");
for (int i = 0; i < 100000; i++) {
sb2.append("Hello");
}
System.out.println("Thời gian nối chuỗi của StringBuilder: "
+ (System.currentTimeMillis() - startTime) + "ms");
}
}
Output:
Thời gian nối chuỗi của StringBuffer: 11ms Thời gian nối chuỗi của StringBuilder: 5ms