String, StringBuilder, StringBuffer
13 Sep 2021 -
1 minute read
String ν΄λμ€
-
String μ μΈ
-
String str = new String("abc");
: ν λ©λͺ¨λ¦¬μ μΈμ€ν΄μ€λ‘ μμ± / μμ±λ λλ§λ€ λ€λ₯Έ μ£Όμ κ° -
String str = "abc";
: μμ ν(Constant pool, μμλ₯Ό μ μ₯νλ 곡κ°)μ μλ μ£Όμ μ°Έμ‘° / λͺ¨λ κ°μ μ£Όμ κ°
-
-
immutable(λΆλ³)
-
String μ°κ²° μ μλ‘μ΄ λ¬Έμμ΄ μμ± > λ©λͺ¨λ¦¬ λλΉ
public class StringTest { public static void main(String[] args) { String java = new String("μλ°λ "); System.out.println(System.identityHashCode(java)); String txt = new String("μ΄λ ΅λ€"); java = java.concat(txt); // concat()λ©μλ : λ¬Έμμ΄ λΆμ΄κΈ° System.out.println(System.identityHashCode(java)); } } // μλ‘ λ€λ₯Έ μ£Όμ κ° μΆλ ₯
StringBuilder, StringBuffer ν΄λμ€
-
mutable(κ°λ³)
-
.append() / .delete() λ±μ API μ¬μ© ν΄ λμΌ κ°μ²΄ λ΄μμ λ¬Έμμ΄ λ³κ²½ κ°λ₯
-
λ¬Έμμ΄μ μΆκ°, μμ , μμ κ° λΉλ²νκ² λ°μνλ€λ©΄ > StringBuilder/StringBuffer μ¬μ©
-
- StringBuilder : λκΈ°ν ν€μλ μ§μ, λ©ν°μ°λ λ νκ²½μμ μμ ν¨(thread-safe)
- String : immutable > thread-safe
- StringBuffer : λκΈ°ν μ§μ X, λ©ν°μ°λ λ νκ²½μμμ μ¬μ©μ μ ν©νμ§ μμ / λ¨μΌμ°λ λμμλ StringBufferλ³΄λ€ λ°μ΄λ μ±λ₯
public class StringBuilderTest { public static void main(String[] args) { String java = new String("μλ°λ "); System.out.println(System.identityHashCode(java)); String txt = new String("μ΄λ ΅λ€ γ "); StringBuilder builder = new StringBuilder(java); System.out.println(System.identityHashCode(java)); builder.append(txt); // append()λ©μλ : λ¬Έμμ΄ λΆμ΄κΈ° System.out.println(System.identityHashCode(java)); } } // μ£Όμ κ° λͺ¨λ λμΌ
- StringBuilder : λκΈ°ν ν€μλ μ§μ, λ©ν°μ°λ λ νκ²½μμ μμ ν¨(thread-safe)