Sự khác nhau giữa StringBuffer và StringBuilder trong java

Difference between StringBuffer and StringBuilder in Java

Sự khác nhau giữa StringBuffer và StringBuilder trong java được thể hiện trong bảng sau:

No.StringBufferStringBuilder
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.

Contents

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");
    }
}

Trả lời