I, String
String
là 1final class
đại diện cho 1 array các character.- Do đó String là
immutable object
có nghĩa là khi 1 String được khởi tạo, nó không thể thay đổi được nữa. - Chúng ta có thể khởi tạo 1 String theo 2 cách:
1 | String str = "ABC"; |
- Ở cách đầu tiên, JVM sẽ tìm hiếm 1 String trong
String pool
. Nếu tìm thấy, JVM sẽ sử dụng String trong String pool. Nếu không tìm thấy, JVM sẽ tạo ra String object trong String pool. - Ở cách thứ hai, JVM tạo ra String object ở trong heap memory.
- String class override 2 method
equals()
vàhashCode()
. Implement củaequals()
trong String class return true nếu chúng có cùng mảng character.
II, StringBuilder và StringBuffer
- Vì String là immutable object do đó các method của String chỉ tạo và trả về 1 String mới.
- Các method này sinh ra nhiều rác trong heap memory. Do đó chúng ta nên sử dụng
StringBuilder
vàStringBuffer
để làm việc với String.
StringBuffer | StringBuilder |
---|---|
Thread-safe | Not thread-safe |
Synchronized | Not synchronized |
Được thêm từ Java 1.0 | Được thêm từ Java 1.5 |
Slower | Faster |
- Toán tử
+
nội tại sử dụng StringBuilder và StringBuffer. - Do StringBuffer thực hiện
synchronized
(thread-safety) do đó nó chậm hơnStringBuilder
. - StringBuilder và StringBuffer chỉ tạo ra 1 String khi bạn gọi
toString()
.