Có nhiều điểm khác nhau giữa StringBuffer và StringBuilder. Danh sách các điểm khác nhau đó được liệt kê dưới đây.
Điểm giống nhau:
StringBuilder và StringBuffer được thiết kế với mục đích giống nhau, đó là thao tác hiệu quả với chuỗi, chúng cũng có các phương thức giống nhau để làm việc với chuỗi.
Điểm khác nhau:
StringBuffer thuộc loại synchronized do đó các phương thức của nó đều là “thread safe” (thích hợp với xử lý đa luồng – multi thread), trong khi StringBuilder thì ngược lại, không synchronized.
Với đặc tính “thread safe”, các phương thức của StringBuffer sẽ chạy chậm hơn so với StringBuilder, vì vậy nếu không làm về Multi-thread bạn nên chọn StringBuilder thay vì chọn StringBuffer.
Ví dụ về StringBuffer:
public class BufferTest{ public static void main(String[] args){ StringBuffer buffer=new StringBuffer("hello");
System.out.println(buffer);
buffer.append("java");
System.out.println(buffer);
}
}
Output: hello hellojava
Ví dụ về StringBuilder
public class BuilderTest{ public static void main(String[] args){ StringBuilder builder=new StringBuilder("hello"); System.out.println(builder); builder.append("java"); System.out.println(builder); } } Output: hello hellojava
Thử nghiệm hiệu suất của StringBuffer và StringBuilder
Cùng xem đoạn code để kiểm tra hiệu suất của StringBuffer và StringBuilder.
public class ConcatTest{ public static void main(String[] args){ long startTime = System.currentTimeMillis(); StringBuffer sb = new StringBuffer("Java"); for (int i=0; i<10000; i++){ sb.append("Tpoint"); } System.out.println("Time taken by StringBuffer: " + (System.currentTimeMillis() - startTime) + "ms"); startTime = System.currentTimeMillis(); StringBuilder sb2 = new StringBuilder("Java"); for (int i=0; i<10000; i++){ sb2.append("Tpoint"); } System.out.println("Time taken by StringBuilder: " + (System.currentTimeMillis() - startTime) + "ms"); } }
Thời gian làm việc của StringBuffer: 16ms Thời gian làm việc của StringBuilder: 0ms
(Bài viết trên được dịch từ bài báo Difference between StringBuffer and StringBuilder của trang javapoint.com)