Immutable Class
λΆλ³ ν΄λμ€λ λ§ κ·Έλλ‘ λΆλ³ κ°μ΄ λ³κ²½λμ§ μλ ν΄λμ€μ΄λ€.
μ΄λ λ€μ λ§ν΄ κ°λ³μ μ΄μ§ μμΌλ©° μμ±ν λ³κ²½ λΆκ°λ₯ν κ°μ²΄μ΄λ€.
λνμ μΌλ‘ String
, Boolean
, Integer
, Float
, Long
λ±λ±μ΄ μλ€.
String str = "λ¬Έμ";
str = "μ«μ";
λ³μ str
μ JVM μ Heap μμμμ κ°μ΄ λ³κ²½λλκ²μ΄ μλλΌ μ«μ
λΌλ κ°μΌλ‘ μ¬ν λΉμ΄ λλκ²μ΄λ€.
μ΄λ λ€μ λ§ν΄ μ«μ
λΌλ κ°μ΄ μλ‘ μμ±λμ΄ λ체λλ κ²μΌλ‘ Heap μμμ μ°Έμ‘°λλ κ°μ²΄ λμμ΄ λ°λλκ²μ΄λ€.
μ₯μ
- μμ±μ, μ κ·Όλ©μλμ λν λ°©μ΄μ λ³΅μ¬ (Defensive Copy) κ° νμκ° μλ€.
- λ©ν°μ€λ λ νκ²½μμ λκΈ°ν μ²λ¦¬ μμ΄ κ°μ²΄λ₯Ό 곡μ ν μ μλ€.
- Thread-Safe νκΈ° λλ¬Έμ κ°μ²΄κ° μμ νλ€.
λ¨μ
- κ°μ²΄κ° κ°μ§λ κ°λ§λ€ μλ‘μ΄ κ°μ²΄κ° νμνλ€.
- λ©λͺ¨λ¦¬ λμμ μλ‘μ΄ κ°μ²΄λ₯Ό κ³μν΄μ μμ±ν΄μΌ νλ€λ μ λλ¬Έμ μ±λ₯μ νλ₯Ό μΌκΈ°μν¬ μ μλ€.
String / StringBuffer / StringBuilder μ μ¬μ©
λ¬Έμμ΄μ λνλ μμλ String
보λ€λ StringBuffer
λ StringBuilder
μ μ¬μ©ν΄μΌ νλ€.
String
μ μλ‘μ΄ κ°μ ν λΉν λλ§λ€ μλ‘ μμ±λκΈ° λλ¬Έ (ν΄λμ€μ λ©λͺ¨λ¦¬ μ°Έμ‘° μ£Όμκ° λ°λ)
StringBuffer
λ stringBuilder
λ κ°μ λ©λͺ¨λ¦¬μ append νλ λ°©μμΌλ‘ ν΄λμ€λ₯Ό λ³λλ‘ μμ±νμ§ μλλ€.
StringBuilder
λ λ³κ²½ κ°λ₯ν λ¬Έμμ΄λ‘ synchronization μ΄ μ μ©λμ§ μλλ€.
StringBuffer
λ λ©ν°μ°λ λ νκ²½μμ μμ μ μ΄λ€.
μ°Έκ³ μλ£