Phân biệt string với stringbuffer và stringbuilder. (câu hỏi thường gặp khi phỏng vấn Java.)

Khi làm việc với các dữ liệu văn bản, Java cung cấp cho bạn 3 class string, stringBuffer và stringBuilder. Nếu làm việc với các dữ liệu lớn bạn nên sử dụng stringBuffer hoặc stringBuilder để đạt hiệu năng nhanh nhất. Về cơ bản 3 class này có nhiều điểm giống nhau, và điểm khác biệt giữa string với stringbuffer và stringbuilder là:
  • string là không thể thay đổi (immutable) nghĩa là khi một giá trị được gắn vào biến string đồng nghĩa với việc nó sẽ được lưu trữ tại một vùng nào đó trên bộ nhớ và khi ta thây đổi giá trị của biến này thì đồng nhĩa với việc giá trị mới sẽ được lưu trữ tại một vùng nhớ khác mà không phải ở vùng nhớ trước đó việc này sẽ làm giảm hiệu xuất của chương trình Java.
  • stringbuffer và stringbuilder thì ngược lại nó cho phép thay đổi (mutable) giá trị của biến stringbuffer hoặc stringbuilder tại chính vùng nhớ chứa giá trị của biến.

Còn stringBuilder và stringBuffer là giống nhau, nó chỉ khác biệt tình huống sử dụng có liên quan tới đa luồng (Multi Thread):
  • Nếu xử lý văn bản sử dụng nhiều luồng (Thread) thì nên sử dụng StringBuffer để tránh tranh chấp giữa các luồng.
  • Nếu xử lý văn bản sử dụng 1 luồng (Thread) thì nên sử dụng StringBuilder. 
Nếu so sánh về hiệu suất xử lý thì StringBuilder là tốt nhất, sau đó StringBuffer và cuối cùng mới là String.





No comments:

Post a Comment