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ó 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 (đang tuyển sinh) vào đầu tháng 03/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 : .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. Trong tháng 4/2018, VietJack khuyến mại giá SỐC chỉ còn 150k cho khóa học, 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 có rating 4.7/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ỉ
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 hoặc facebook cá nhân Nguyễn Thanh Tuyền để 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.
Bài học Java phổ biến tại vietjack.com: