Đối với nối chuỗi chúng ta có thể sử dụng concat()
hoặc toán tử concat (+)
.Toán tử ghép nối (+) so với concat()
Tôi đã thử kiểm tra hiệu suất sau và tìm thấy concat()
là cách nhanh hơn và hiệu quả về bộ nhớ để nối chuỗi.
String nối so với 100.000 lần:
String str = null;
//------------Using Concatenation operator-------------
long time1 = System.currentTimeMillis();
long freeMemory1 = Runtime.getRuntime().freeMemory();
for(int i=0; i<100000; i++){
str = "Hi";
str = str+" Bye";
}
long time2 = System.currentTimeMillis();
long freeMemory2 = Runtime.getRuntime().freeMemory();
long timetaken1 = time2-time1;
long memoryTaken1 = freeMemory1 - freeMemory2;
System.out.println("Concat operator :" + "Time taken =" + timetaken1 +
" Memory Consumed =" + memoryTaken1);
//------------Using Concat method-------------
long time3 = System.currentTimeMillis();
long freeMemory3 = Runtime.getRuntime().freeMemory();
for(int j=0; j<100000; j++){
str = "Hi";
str = str.concat(" Bye");
}
long time4 = System.currentTimeMillis();
long freeMemory4 = Runtime.getRuntime().freeMemory();
long timetaken2 = time4-time3;
long memoryTaken2 = freeMemory3 - freeMemory4;
System.out.println("Concat method :" + "Time taken =" + timetaken2 +
" Memory Consumed =" + memoryTaken2);
quả
Concat operator: Time taken = 31; Memory Consumed = 2259096
Concat method : Time taken = 16; Memory Consumed = 299592
Nếu concat()
là nhanh hơn so với các nhà điều hành sau đó khi chúng ta nên sử dụng nối hành (+)
?
Đọc: http://stackoverflow.com/questions/693597/is-there-a-difference-between-string-concat-and-the-operator-in-java và http://stackoverflow.com/questions/47605/java-string-concatenation –
Về điều duy nhất có vẻ khác nhau là khi chuỗi bạn thêm vào có độ dài bằng 0 nó chỉ cho bạn trở lại bản gốc thay vì tạo một Chuỗi mới. Toán tử + có thể tốn kém một chút ... nếu bạn đang thực hiện hàng trăm hoặc hàng nghìn hoạt động xây dựng chuỗi, hãy nhìn vào StringBuffer.append(). Nó là phổ biến để xem một phương thức xây dựng một StringBuffer và sau đó trả về hoặc sử dụng theBuffer.toString() ở cuối. –
@PankajKumar tốt, bạn có thể muốn StringBuilder thay vì StringBuffer – ymajoros