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