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" ); |
System.out.println(buffer); |
Output:
Ví dụ về StringBuilder trong java
public class BuilderTest { |
public static void main(String[] args) { |
StringBuilder builder = new StringBuilder( "hello" ); |
System.out.println(builder); |
Output:
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++) { |
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++) { |
System.out.println( "Thời gian nối chuỗi của StringBuilder: " |
+ (System.currentTimeMillis() - startTime) + "ms" ); |