Java String - Sự khác nhau giữa StringBuffer và StringBuilder
Sự khác nhau giữa StringBuffer và StringBuilder trong java
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) {
// TODO Auto-generated method stub
StringBuffer buffer = new StringBuffer("hello");
buffer.append("java");
System.out.println(buffer);
}
}
Kết quả:
Ví dụ về StringBuilder trong java
public class BuilderTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
StringBuilder builder = new StringBuilder("hello");
builder.append("java");
System.out.println(builder);
}
}
Kết quả:
Test hiệu suất của StringBuffer và StringBuilder trong java trong java
public class ConcatTest01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
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");
}
}
Kết quả: