So sánh lớp StringBuffer và StringBuilder trong Java



Có nhiều điểm khác nhau giữa lớp String và StringBuffer trong Java. Bảng dưới liệt kê các điểm khác nhau này:

Lớp StringBuffer Lớp StringBuilder
Lớp StringBuffer là đồng bộ (synchronized), tức là an toàn luồng (thread safe). Nghĩa là hai Thread không thể gọi đồng thời các phương thức của lớp StringBuffer StringBuilder là không đồng bộ (non-synchronized) tức là không an toàn luồng. Nghĩa là hai Thread có thể gọi đồng thời các phương thức của lớp StringBuilder
StringBuffer là kém hiệu quả hơn StringBuilder StringBuilder là hiệu quả hơn StringBuffer

Ví dụ về lớp StringBuffer trong Java

public class BufferTest{  
    public static void main(String[] args){  
        StringBuffer buffer=new StringBuffer("hello");  
        buffer.append("java");  
        System.out.println(buffer);  
    }  
}  

Chương trình trên sẽ cho kết quả dạng:

hellojava

Ví dụ về lớp StringBuilder trong Java

public class BuilderTest{  
    public static void main(String[] args){  
        StringBuilder builder=new StringBuilder("hello");  
        builder.append("java");  
        System.out.println(builder);  
    }  
}  

Chương trình trên sẽ cho kết quả dạng:

hellojava

Kiểm tra hiệu suất của lớp StringBuffer và StringBuilder trong Java

Bạn thử ví dụ đơn giản sau để kiểm tra hiệu suất của lớp StringBuffer và lớp StringBuilder 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<10000; i++){  
            sb.append("Vietjack");  
        }  
        System.out.println("Thoi gian tieu ton boi StringBuffer: " + (System.currentTimeMillis() - startTime) + "ms");  
        startTime = System.currentTimeMillis();  
        StringBuilder sb2 = new StringBuilder("Java");  
        for (int i=0; i<10000; i++){  
            sb2.append("Vietjack");  
        }  
        System.out.println("Thoi gian tieu ton boi StringBuilder: " + (System.currentTimeMillis() - startTime) + "ms");  
    }  
}  

Chương trình trên sẽ cho kết quả dạng:

Time taken by StringBuffer: 16ms
Time taken by StringBuilder: 0ms 

Mọi người cho thể tham gia khóa học thứ 6 của vietjackteam vào đầu tháng 02/2018 do anh Nguyễn Thanh Tuyền, admin vietjack.com trực tiếp giảng dạy tại Hà Nội. Chi tiết nội dung khóa học tham khỏa link : Khóa học Java.Các bạn học CNTT, điện tử viễn thông, đa phương tiện, điện-điện tử, toán tin có thể theo học khóa này. Số lượng các công việc Java hoặc .NET luôn gấp ít nhất 3 lần Android hoặc iOS trên thị trường tuyển dụng.

Các bạn ở xa học không có điều kiện thời gian có thể tham dự khóa Java online để chủ động cho việc học tập. Nhân dịp U23 Việt Nam đại thắng, khóa học có giá 230k từ giờ đến Tết nguyên đán, liên hệ facebook admin fb.com/tuyen.vietjack để thanh toán chuyển khoản hoặc thẻ điện thoại, khóa học bằng Tiếng Việt với gần 100 video, các bạn có thể chủ động bất cứ lúc nào, và xem mãi mãi. Thông tin khóa học tại Khóa học Java Online trên Udemy. Khóa học có rating 4.8/5 trên udemy từ nhận xét của các bạn học viên.

Mọi người có thể xem demo nội dung khóa học tại địa chỉ Video demo khóa học Offline

Loạt bài hướng dẫn của chúng tôi dựa một phần trên nguồn tài liệu của: Tutorialspoint.com

Follow fanpage của team https://www.facebook.com/vietjackteam/ hoặc facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.