I. String, StringBuffer, StringBuilderμ κ°μ
1. String ν΄λμ€
- String ν΄λμ€λ λΆλ³(Immutable)ν κ°μ²΄λ₯Ό μμ±νλ€.
- ν λ² μμ±λ String κ°μ²΄λ κ°μ λ³κ²½ν μ μμΌλ©°, λ³κ²½ μμλ μλ‘μ΄ String κ°μ²΄κ° μμ±λλ€.
- λ¬Έμμ΄ μ°μ°μ΄ λΉλ²ν λ°μν κ²½μ° λ©λͺ¨λ¦¬ μ¬μ©λμ΄ λ§μμ§κ³ μ±λ₯μ΄ μ νλλ€.
2. StringBuffer ν΄λμ€
- StringBuffer ν΄λμ€λ κ°λ³(Mutable)ν κ°μ²΄λ₯Ό μμ±νλ€.
- λ¬Έμμ΄ μ°μ°μ μν μ¬λ¬ λ©μλλ₯Ό μ 곡νλ©°, κΈ°μ‘΄ κ°μ²΄μ λ΄μ©μ λ³κ²½ν μ μλ€.
- StringBuilder ν΄λμ€μ μ¬μ©λ², μ±λ₯ λ©΄μμ μ μ¬νμ§λ§ λκΈ°ν(synchronized)λ₯Ό μ§μνμ¬, λ©ν°μ€λ λ νκ²½μμ μμ νκ² μ¬μ©ν μ μλ€.
- λ¬Έμμ΄ μ°μ°μ΄ μμ£Ό λ°μνλ κ²½μ° μ¬μ©ν μ μλ€.
3. StringBuilder ν΄λμ€
- StringBuilder ν΄λμ€λ κ°λ³(Mutable)ν κ°μ²΄λ₯Ό μμ±νλ€.
- StringBuffer ν΄λμ€μ λ§μ°¬κ°μ§λ‘ λ¬Έμμ΄ μ°μ°μ μν μ¬λ¬ λ©μλλ₯Ό μ 곡νλ©°, κΈ°μ‘΄ κ°μ²΄μ λ΄μ©μ λ³κ²½ν μ μλ€.
- StringBuffer ν΄λμ€μμ κ°μ₯ ν° μ°¨μ΄μ μ λκΈ°ν(synchronized)λ₯Ό μ§μνμ§ μμ λ©ν°μ€λ λ νκ²½μμ μ¬μ©ν λ μ±λ₯μμ μ΄μ μ΄ μλ€.
- λ¬Έμμ΄ μ°μ°μ΄ μμ£Ό λ°μνκ³ , λ©ν°μ€λ λ νκ²½μ΄ μλ κ²½μ°μ μ¬μ©ν μ μλ€.
II. String ν΄λμ€
String ν΄λμ€λ μλ°μμ κ°μ₯ κΈ°λ³Έμ μΈ λ¬Έμμ΄μ νννλ ν΄λμ€μ΄λ€. μ΄ ν΄λμ€λ λΆλ³(Immutable)ν μμ±μ κ°μ§κ³ μμ΄, ν λ² μμ±λ String κ°μ²΄λ κ°μ λ³κ²½ν μ μμΌλ©° λ³κ²½ μμλ μλ‘μ΄ String κ°μ²΄κ° μμ±λλ€.
1. λ¬Έμμ΄ μμ±
String κ°μ²΄λ₯Ό μμ±νλ λ°©λ²μλ λ κ°μ§κ° μλ€. 첫 λ²μ§Έλ 리ν°λ΄μ μ΄μ©ν μμ±μ΄λ€. μλ₯Ό λ€μ΄, λ€μκ³Ό κ°μ΄ String κ°μ²΄λ₯Ό μμ±ν μ μλ€.
String str1 = "Hello";
λ λ²μ§Έ λ°©λ²μ new μ°μ°μλ₯Ό μ΄μ©νμ¬ μμ±νλ κ²μ΄λ€.
String str2 = new String("Hello");
2. λ¬Έμμ΄ μ°μ°
String ν΄λμ€λ λ¬Έμμ΄μ λ€λ£¨κΈ° μν μ¬λ¬ λ©μλλ₯Ό μ 곡νλ€. κ°μ₯ μΌλ°μ μΌλ‘ μ¬μ©λλ λ©μλλ λ€μκ³Ό κ°λ€.
- length(): λ¬Έμμ΄μ κΈΈμ΄λ₯Ό λ°ννλ€.
- charAt(int index): μ£Όμ΄μ§ μΈλ±μ€μ ν΄λΉνλ λ¬Έμλ₯Ό λ°ννλ€.
- substring(int beginIndex): μ£Όμ΄μ§ μΈλ±μ€λΆν° λ¬Έμμ΄μ λκΉμ§λ₯Ό λ°ννλ€.
- concat(String str): μ£Όμ΄μ§ λ¬Έμμ΄μ μ΄μ΄ λΆμΈ κ²°κ³Όλ₯Ό λ°ννλ€.
- equals(Object obj): μ£Όμ΄μ§ κ°μ²΄μ λ¬Έμμ΄μ΄ λμΌνμ§ νμΈνλ€.
- toUpperCase(), toLowerCase(): λλ¬Έμ, μλ¬Έμλ‘ λ³νν λ¬Έμμ΄μ λ°ννλ€.
3. λ¬Έμμ΄ λΉκ΅
String ν΄λμ€λ λ¬Έμμ΄μ λΉκ΅νλ λ©μλλ μ 곡νλ€. μ£Όλ‘ μ¬μ©λλ λ©μλλ λ€μκ³Ό κ°λ€.
- equals(): μ£Όμ΄μ§ κ°μ²΄μ λ¬Έμμ΄μ΄ λμΌνμ§ νμΈνλ€. κ°μ λΉκ΅λ₯Ό μννλ€.
- compareTo() : λ λ¬Έμμ΄μ μ¬μ μμΌλ‘ λΉκ΅νμ¬ μμλ₯Ό λ°ννλ€. μ λμ½λ κ°μ λΉκ΅νλ€.
- equalsIgnoreCase(): λμλ¬Έμλ₯Ό ꡬλΆνμ§ μκ³ λΉκ΅νλ€.
4. λ¬Έμμ΄ λ³ν
String ν΄λμ€λ λ€λ₯Έ μλ£νμΌλ‘μ λ³νμ μν λ©μλλ μ 곡νλ€. λͺ κ°μ§ μμλ₯Ό λ€λ©΄ λ€μκ³Ό κ°λ€.
- toLowerCase(): λ¬Έμμ΄μ μλ¬Έμλ‘ λ³νν λ¬Έμμ΄μ λ°ννλ€.
- toUpperCase(): λ¬Έμμ΄μ λλ¬Έμλ‘ λ³νν λ¬Έμμ΄μ λ°ννλ€.
- trim(): λ¬Έμμ΄μ μ λμ μλ 곡백μ μ κ±°ν λ¬Έμμ΄μ λ°ννλ€.
- valueOf(): λ€λ₯Έ μλ£νμ κ°μ λ¬Έμμ΄λ‘ λ³ννμ¬ λ°ννλ€.
String ν΄λμ€λ λ§€μ° μ μ©νκ³ λ리 μ¬μ©λμ§λ§, λ¬Έμμ΄μ΄ μμ£Ό λ³κ²½λλ κ²½μ°μλ μ±λ₯ λ¬Έμ κ° λ°μν μ μλ€. μ΄λ¬ν κ²½μ°μλ StringBuffer ν΄λμ€λ StringBuilder ν΄λμ€λ₯Ό μ¬μ©νλ κ²μ΄ μ’λ€.
III. StringBuffer ν΄λμ€
StringBuffer ν΄λμ€λ μλ°μμ λ¬Έμμ΄μ κ°λ³μ μΌλ‘ μ²λ¦¬νκΈ° μν ν΄λμ€μ΄λ€. StringBuffer κ°μ²΄λ₯Ό μμ±νλ©΄ λ¬Έμμ΄ μ°μ°μ μν λ€μν λ©μλλ₯Ό μ¬μ©ν μ μμΌλ©°, κΈ°μ‘΄ κ°μ²΄μ λ΄μ©μ λ³κ²½ν μ μλ€.
1. StringBuffer κ°μ²΄ μμ±
StringBuffer κ°μ²΄λ₯Ό μμ±νλ λ°©λ²μ λ€μκ³Ό κ°λ€.
StringBuffer sb = new StringBuffer(); // λΉ λ¬Έμμ΄λ‘ μ΄κΈ°ν
StringBuffer sb = new StringBuffer("Hello"); // μ΄κΈ° λ¬Έμμ΄λ‘ μ΄κΈ°ν
2. λ¬Έμμ΄ μ°μ°
StringBuffer ν΄λμ€λ λ¬Έμμ΄ μ°μ°μ μν λ€μν λ©μλλ₯Ό μ 곡νλ€. κ°μ₯ μΌλ°μ μΌλ‘ μ¬μ©λλ λ©μλλ λ€μκ³Ό κ°λ€.
- append(): λ¬Έμμ΄μ λμ μ£Όμ΄μ§ κ°μ μΆκ°νλ€.
- insert(): μ£Όμ΄μ§ μμΉμ κ°μ μ½μ νλ€.
- delete(): μ£Όμ΄μ§ λ²μμ ν΄λΉνλ λ¬Έμμ΄μ μμ νλ€.
- replace(): μ£Όμ΄μ§ λ²μμ ν΄λΉνλ λ¬Έμμ΄μ μλ‘μ΄ λ¬Έμμ΄λ‘ λ체νλ€.
- reverse(): λ¬Έμμ΄μ μμμΌλ‘ λ³ννλ€.
- substring(): μ£Όμ΄μ§ λ²μμ ν΄λΉνλ λ¬Έμμ΄μ λ°ννλ€.
3. StringBufferμ Stringμ μ°¨μ΄μ
StringBufferλ Stringκ³Ό λ¬λ¦¬ κ°λ³μ μΈ μμ±μ κ°μ§λ€. λ°λΌμ, λ¬Έμμ΄ μ°μ°μ΄ λΉλ²ν λ°μνλ κ²½μ° StringBufferλ₯Ό μ¬μ©νλ κ²μ΄ μ±λ₯μ μΌλ‘ μ 리νλ€. Stringμ λ¬Έμμ΄ μ°μ° μ λ§€λ² μλ‘μ΄ κ°μ²΄λ₯Ό μμ±νκΈ° λλ¬Έμ λ©λͺ¨λ¦¬ μ¬μ©λκ³Ό μ±λ₯μ΄ μ νλ μ μλ€. νμ§λ§ StringBufferλ κΈ°μ‘΄ κ°μ²΄μ λ΄μ©μ λ³κ²½νκΈ° λλ¬Έμ μλ‘μ΄ κ°μ²΄λ₯Ό μμ±νμ§ μμλ λλ€.
λν, StringBufferλ λκΈ°ν(synchronized)λ₯Ό μ§μνμ¬ λ©ν°μ€λ λ νκ²½μμ μμ νκ² μ¬μ©ν μ μλ€. μ¬λ¬ κ°μ μ€λ λκ° λμμ StringBuffer κ°μ²΄λ₯Ό μ κ·Όνκ³ λ³κ²½ν΄λ μ΄ μμ λ€μ΄ λκΈ°νλμ΄ μμ°¨μ μΌλ‘ μ²λ¦¬λλ―λ‘ μΌκ΄λ κ²°κ³Όλ₯Ό μ»μ μ μλ€.
4. μ£Όμμ¬ν
StringBuffer ν΄λμ€λ₯Ό μ¬μ©ν λμλ μ£Όμν΄μΌ ν λͺ κ°μ§ μ¬νμ΄ μλ€.
- StringBuffer κ°μ²΄λ₯Ό μ¬μ©ν λμλ λ©λͺ¨λ¦¬ μ¬μ©λμ΄ ν¬λ€λ μ μ κ³ λ €ν΄μΌ νλ€. λ°λΌμ, λ¬Έμμ΄ μ°μ°μ΄ μμ£Ό λ°μνμ§ μλ κ²½μ°μλ String ν΄λμ€λ₯Ό μ¬μ©νλ κ²μ΄ λ ν¨μ¨μ μ΄λ€.
- StringBufferλ λκΈ°νλ₯Ό μ§μνκΈ° λλ¬Έμ λ©ν°μ€λ λ νκ²½μμ μμ νκ² μ¬μ©ν μ μμ§λ§, μ±κΈμ€λ λ νκ²½μμλ StringBuilderλ₯Ό μ¬μ©νλ κ²μ΄ μ±λ₯μ μ΄μ μ΄ μλ€.
- StringBuffer ν΄λμ€λ λ©μλ 체μ΄λμ μ§μνλ€. λ°λΌμ, μ¬λ¬ κ°μ λ©μλλ₯Ό μ°μν΄μ νΈμΆνλ κ²μ΄ κ°λ₯νλ€. μλ₯Ό λ€μ΄,
StringBuffer sb = new StringBuffer();
sb.append("Hello ").append("world");
μμ κ°μ΄ μ¬λ¬ κ°μ λ¬Έμμ΄μ μ°μν΄μ μΆκ°ν μ μλ€.
IV. StringBuilder ν΄λμ€
StringBuilder ν΄λμ€λ μλ°μμ λ¬Έμμ΄μ κ°λ³μ μΌλ‘ μ²λ¦¬νκΈ° μν ν΄λμ€λ‘, StringBuffer ν΄λμ€μ μ μ¬ν κΈ°λ₯μ μ 곡νλ€. StringBuilder κ°μ²΄λ₯Ό μμ±νλ©΄ λ¬Έμμ΄ μ°μ°μ μν λ€μν λ©μλλ₯Ό μ¬μ©ν μ μμΌλ©°, κΈ°μ‘΄ κ°μ²΄μ λ΄μ©μ λ³κ²½ν μ μλ€.
1. StringBuilder κ°μ²΄ μμ±
StringBuilder κ°μ²΄λ₯Ό μμ±νλ λ°©λ²μ λ€μκ³Ό κ°λ€.
StringBuilder sb = new StringBuilder(); // λΉ λ¬Έμμ΄λ‘ μ΄κΈ°ν
StringBuilder sb = new StringBuilder("Hello"); // μ΄κΈ° λ¬Έμμ΄λ‘ μ΄κΈ°ν
2. λ¬Έμμ΄ μ°μ°
StringBuilder ν΄λμ€λ λ¬Έμμ΄ μ°μ°μ μν λ€μν λ©μλλ₯Ό μ 곡νλ€. κ°μ₯ μΌλ°μ μΌλ‘ μ¬μ©λλ λ©μλλ λ€μκ³Ό κ°λ€.
- append(): λ¬Έμμ΄μ λμ μ£Όμ΄μ§ κ°μ μΆκ°νλ€.
- insert(): μ£Όμ΄μ§ μμΉμ κ°μ μ½μ νλ€.
- delete(): μ£Όμ΄μ§ λ²μμ ν΄λΉνλ λ¬Έμμ΄μ μμ νλ€.
- replace(): μ£Όμ΄μ§ λ²μμ ν΄λΉνλ λ¬Έμμ΄μ μλ‘μ΄ λ¬Έμμ΄λ‘ λ체νλ€.
- reverse(): λ¬Έμμ΄μ μμμΌλ‘ λ³ννλ€.
- substring(): μ£Όμ΄μ§ λ²μμ ν΄λΉνλ λ¬Έμμ΄μ λ°ννλ€.
3. StringBufferμμ μ°¨μ΄μ
StringBuilderλ StringBufferμ κΈ°λ₯μ μΌλ‘λ λμΌνμ§λ§, μ€λ λ λκΈ°νλ₯Ό κ³ λ €νμ§ μλλ€λ μ μμ μ°¨μ΄κ° μλ€. λ°λΌμ, μ±κΈμ€λ λ νκ²½μμ λ¬Έμμ΄ μ°μ°μ μνν λμλ StringBuilderλ₯Ό μ¬μ©νλ κ²μ΄ StringBufferλ³΄λ€ μ±λ₯μ μ΄μ μ΄ μλ€.
4. μ£Όμμ¬ν
StringBuilder ν΄λμ€λ₯Ό μ¬μ©ν λμλ λ€μκ³Ό κ°μ μ¬νμ μ£Όμν΄μΌ νλ€.
- StringBuilder κ°μ²΄λ₯Ό μ¬μ©ν λμλ λ©λͺ¨λ¦¬ μ¬μ©λμ΄ ν¬λ€λ μ μ κ³ λ €ν΄μΌ νλ€. λ°λΌμ, λ¬Έμμ΄ μ°μ°μ΄ μμ£Ό λ°μνμ§ μλ κ²½μ°μλ String ν΄λμ€λ₯Ό μ¬μ©νλ κ²μ΄ λ ν¨μ¨μ μ΄λ€.
- StringBuilder κ°μ²΄λ μ€λ λ λκΈ°νλ₯Ό κ³ λ €νμ§ μκΈ° λλ¬Έμ λ©ν°μ€λ λ νκ²½μμ μ¬μ©ν λμλ λκΈ°νλ₯Ό μ§μ κ΄λ¦¬ν΄μ£Όμ΄μΌ νλ€.
- StringBuilder ν΄λμ€λ λ©μλ 체μ΄λμ μ§μνλ€. λ°λΌμ, μ¬λ¬ κ°μ λ©μλλ₯Ό μ°μν΄μ νΈμΆνλ κ²μ΄ κ°λ₯νλ€. μλ₯Ό λ€μ΄,
StringBuilder sb = new StringBuilder();
sb.append("Hello ").append("world");
μμ κ°μ΄ μ¬λ¬ κ°μ λ¬Έμμ΄μ μ°μν΄μ μΆκ°ν μ μλ€.
V. String, StringBuffer, StringBuilderμ μ°¨μ΄
String, StringBuffer, StringBuilderμ λͺ¨λ μλ°μμ λ¬Έμμ΄μ μ²λ¦¬νκΈ° μν ν΄λμ€μ΄μ§λ§, κ°κ°μ νΉμ§κ³Ό μ©λκ° λ€λ₯΄λ€. λ€μμ κ° ν΄λμ€μ μ°¨μ΄μ μ μ€λͺ νλ€.
1. String ν΄λμ€
String ν΄λμ€λ μλ°μμ κ°μ₯ κΈ°λ³Έμ μΌλ‘ μ¬μ©λλ λ¬Έμμ΄μ μ²λ¦¬νκΈ° μν΄ μ 곡λλ ν΄λμ€μ΄λ€. λ€μμ String ν΄λμ€μ νΉμ§μ΄λ€.
- String κ°μ²΄λ νλ² μμ±λλ©΄ λ³κ²½ν μ μλ λΆλ³(immutable) μμ±μ κ°μ§λ€. μ¦, κΈ°μ‘΄ λ¬Έμμ΄μ λ³κ²½νλ μ°μ°μ μννλ©΄ μλ‘μ΄ String κ°μ²΄κ° μμ±λλ€.
- λ¬Έμμ΄ μ°μ° μ λ§€λ² μλ‘μ΄ κ°μ²΄λ₯Ό μμ±νλ―λ‘ λ©λͺ¨λ¦¬ 곡κ°μ λ§μ΄ μ°¨μ§νκ² λ μ μλ€.
- λ©ν°μ€λ λ νκ²½μμ μμ νλ€.
2. StringBuffer ν΄λμ€
StringBuffer ν΄λμ€λ μλ°μμ λ¬Έμμ΄μ κ°λ³μ μΌλ‘ μ²λ¦¬νκΈ° μν ν΄λμ€λ‘, λ©ν°μ€λ λ νκ²½μμ μμ νκ² μ¬μ©ν μ μλ€. λ€μμ StringBuffer ν΄λμ€μ νΉμ§μ΄λ€.
- StringBuffer κ°μ²΄λ κ°λ³μ μΈ μμ±μ κ°μ§λ€. μμ±λ κ°μ²΄μ λ΄μ©μ λ³κ²½ν μ μμΌλ©°, λ¬Έμμ΄ μ°μ°μ΄ λΉλ²ν λ°μνλ κ²½μ°μ μ μ©νλ€.
- λ¬Έμμ΄ μ°μ° μ κΈ°μ‘΄ κ°μ²΄μ λ΄μ©μ λ³κ²½νλ―λ‘ μλ‘μ΄ κ°μ²΄λ₯Ό μμ±νμ§ μμλ λλ€. λ°λΌμ, λ©λͺ¨λ¦¬ μ¬μ©λκ³Ό μ±λ₯μ΄ κ°μ λλ€.
- λ©ν°μ€λ λ νκ²½μμ μμ νκ² μ¬μ©ν μ μλ€.
3. StringBuilder ν΄λμ€
StringBuilder ν΄λμ€λ StringBufferμ κΈ°λ₯μ μΌλ‘ λμΌνμ§λ§, μ€λ λ λκΈ°νλ₯Ό κ³ λ €νμ§ μλλ€λ μ μμ μ°¨μ΄κ° μλ€. λ€μμ StringBuilder ν΄λμ€μ νΉμ§μ΄λ€.
- StringBuilder κ°μ²΄λ μ±κΈμ€λ λ νκ²½μμ λ¬Έμμ΄ μ°μ°μ μνν λμ μ¬μ©νλ€. μ€λ λ λκΈ°νλ₯Ό κ³ λ €νμ§ μκΈ° λλ¬Έμ StringBufferλ³΄λ€ μ±λ₯μ μ΄μ μ΄ μλ€.
- λ¬Έμμ΄ μ°μ° μ κΈ°μ‘΄ κ°μ²΄μ λ΄μ©μ λ³κ²½νλ―λ‘ μλ‘μ΄ κ°μ²΄λ₯Ό μμ±νμ§ μμλ λλ€. λ°λΌμ, λ©λͺ¨λ¦¬ μ¬μ©λκ³Ό μ±λ₯μ΄ κ°μ λλ€.
- λ©ν°μ€λ λ νκ²½μμλ λκΈ°ν μ²λ¦¬λ₯Ό μ§μ κ΄λ¦¬ν΄μ£Όμ΄μΌ μμ νκ² μ¬μ©ν μ μλ€.
4. μ μ ν μ ν λ°©λ²
String, StringBuffer, StringBuilder μ€ μ΄λ€ ν΄λμ€λ₯Ό μ¬μ©ν΄μΌ ν μ§λ μν©μ λ°λΌ λ€λ₯΄λ€. λ€μμ μ ν λ°©λ²μ λν κ°μ΄λλΌμΈμ΄λ€.
- λ¬Έμμ΄ λ³κ²½μ΄ λ°μνμ§ μλ κ²½μ°μλ String ν΄λμ€λ₯Ό μ¬μ©νλ€. λΆλ³(immutable) μμ±μ κ°μ§κ³ μκΈ° λλ¬Έμ μμ μ±κ³Ό μμΈ‘ κ°λ₯μ±μ΄ λλ€.
- λ¬Έμμ΄ λ³κ²½μ΄ λΉλ²νκ² λ°μνκ³ λ©ν°μ€λ λ νκ²½μμ μμ ν μ²λ¦¬κ° νμν κ²½μ°μλ StringBuffer ν΄λμ€λ₯Ό μ¬μ©νλ€.
- λ¬Έμμ΄ λ³κ²½μ΄ λΉλ²νκ² λ°μνμ§λ§ μ±κΈμ€λ λ νκ²½μμ μμ ν μ²λ¦¬κ° κ°λ₯ν κ²½μ°μλ StringBuilder ν΄λμ€λ₯Ό μ¬μ©νλ€.
μ μ ν ν΄λμ€λ₯Ό μ ννμ¬ λ¬Έμμ΄ μ²λ¦¬λ₯Ό μνν¨μΌλ‘μ¨ λ©λͺ¨λ¦¬ μ¬μ©λκ³Ό μ±λ₯μ μ΅μ νν μ μλ€.
VI. μ¬μ© μ΄μ
String, StringBuffer, StringBuilder ν΄λμ€λ λͺ¨λ λ¬Έμμ΄μ μ²λ¦¬νκΈ° μν ν΄λμ€μ΄μ§λ§, κ°κ°μ νΉμ§μ λ°λΌ μ¬μ© μ΄μ κ° λ€λ₯Ό μ μλ€. λ€μμ κ° ν΄λμ€μ μ¬μ© μ΄μ μ λν μ€λͺ μ΄λ€.
1. String ν΄λμ€μ μ¬μ© μ΄μ
String ν΄λμ€λ μλ°μμ κ°μ₯ μΌλ°μ μΌλ‘ μ¬μ©λλ λ¬Έμμ΄ μ²λ¦¬ ν΄λμ€μ΄λ€. λ€μμ String ν΄λμ€μ μ¬μ© μ΄μ μ΄λ€.
- String κ°μ²΄λ λΆλ³(immutable) μμ±μ κ°μ§κ³ μλ€. λ°λΌμ, νλ² μμ±λ λ¬Έμμ΄μ λ³κ²½ν μ μλ€. μ΄λ₯Ό ν΅ν΄ μμ μ±κ³Ό μμΈ‘ κ°λ₯μ±μ΄ μ¦κ°νλ€.
- λ©ν°μ€λ λ νκ²½μμ μμ νκ² μ¬μ©ν μ μλ€. μ€λ λ κ°μ 곡μ λλ λ°μ΄ν°λ‘μ μ¬μ©ν¨μΌλ‘μ¨ λκΈ°ν λ¬Έμ λ₯Ό μλ°©νλ€.
- λ¬Έμμ΄ μ°μ°μ΄ νμν κ²½μ°μλ μλ‘μ΄ String κ°μ²΄λ₯Ό μμ±νλ€. μ΄λ₯Ό ν΅ν΄ κΈ°μ‘΄ κ°μ²΄μ λ΄μ©μ΄ λ³κ²½λμ§ μκ³ , μκΈ°μΉ μμ κ²°κ³Όλ₯Ό λ°©μ§ν μ μλ€.
- λ΄λΆμ μΌλ‘ λ¬Έμμ΄ λ¦¬ν°λ΄ ν(string literal pool)μ΄λΌλ μμμ μ¬μ©νμ¬ λμΌν λ¬Έμμ΄μ 곡μ νλ€. λ°λΌμ, λμΌν λ¬Έμμ΄μ λν λ©λͺ¨λ¦¬ μ¬μ©λμ μ΅μ νν μ μλ€.
2. StringBuffer ν΄λμ€μ μ¬μ© μ΄μ
StringBuffer ν΄λμ€λ λ¬Έμμ΄μ κ°λ³μ μΌλ‘ μ²λ¦¬νκΈ° μν ν΄λμ€λ‘, λ©ν°μ€λ λ νκ²½μμ μμ νκ² μ¬μ©ν μ μλ€. λ€μμ StringBuffer ν΄λμ€μ μ¬μ© μ΄μ μ΄λ€.
- StringBuffer κ°μ²΄λ κ°λ³μ μΈ μμ±μ κ°μ§λ€. λ°λΌμ, νλ² μμ±λ κ°μ²΄μ λ΄μ©μ λ³κ²½ν μ μλ€. μ΄λ₯Ό ν΅ν΄ λ¬Έμμ΄ μ°μ°μ μ μ°νκ² μνν μ μλ€.
- λ¬Έμμ΄ μ°μ°μ΄ λΉλ²ν λ°μνλ κ²½μ°μ μ μ©νλ€. StringBuffer ν΄λμ€λ κΈ°μ‘΄ κ°μ²΄μ λ΄μ©μ λ³κ²½νλ―λ‘, μλ‘μ΄ κ°μ²΄λ₯Ό μμ±νμ§ μμλ λλ€. μ΄λ₯Ό ν΅ν΄ λ©λͺ¨λ¦¬ μ¬μ©λκ³Ό μ±λ₯μ΄ κ°μ λλ€.
- λ©ν°μ€λ λ νκ²½μμ μμ νκ² μ¬μ©ν μ μλ€. μ¬λ¬ μ€λ λκ° λμμ StringBuffer κ°μ²΄λ₯Ό μ¬μ©νμ¬ λ¬Έμμ΄ μ°μ°μ μνν΄λ, λκΈ°ν μ²λ¦¬λ₯Ό ν΅ν΄ μκΈ°μΉ μμ κ²°κ³Όλ₯Ό λ°©μ§ν μ μλ€.
3. StringBuilder ν΄λμ€μ μ¬μ© μ΄μ
StringBuilder ν΄λμ€λ StringBufferμ κΈ°λ₯μ μΌλ‘ λμΌνμ§λ§, μ€λ λ λκΈ°νλ₯Ό κ³ λ €νμ§ μλλ€λ μ μμ μ°¨μ΄κ° μλ€. λ€μμ StringBuilder ν΄λμ€μ μ¬μ© μ΄μ μ΄λ€.
- μ±κΈμ€λ λ νκ²½μμ λ¬Έμμ΄ μ°μ°μ μνν λμ μ¬μ©νλ€. μ€λ λ λκΈ°νλ₯Ό κ³ λ €νμ§ μκΈ° λλ¬Έμ StringBufferλ³΄λ€ μ±λ₯μ μ΄μ μ΄ μλ€.
- λ¬Έμμ΄ μ°μ°μ΄ λΉλ²ν λ°μνλ κ²½μ°μ μ μ©νλ€. StringBuilder ν΄λμ€λ κΈ°μ‘΄ κ°μ²΄μ λ΄μ©μ λ³κ²½νλ―λ‘, μλ‘μ΄ κ°μ²΄λ₯Ό μμ±νμ§ μμλ λλ€. μ΄λ₯Ό ν΅ν΄ λ©λͺ¨λ¦¬ μ¬μ©λκ³Ό μ±λ₯μ΄ κ°μ λλ€.
- λ©ν°μ€λ λ νκ²½μμλ λκΈ°ν μ²λ¦¬λ₯Ό μ§μ κ΄λ¦¬ν΄μ£Όμ΄μΌ μμ νκ² μ¬μ©ν μ μλ€.
μ μ ν λ¬Έμμ΄ μ²λ¦¬ ν΄λμ€λ₯Ό μ ννμ¬ μ¬μ©ν¨μΌλ‘μ¨, λ©λͺ¨λ¦¬ μ¬μ©λκ³Ό μ±λ₯μ μ΅μ νν μ μλ€. μν©μ λ§λ ν΄λμ€λ₯Ό μ ννμ¬ λ¬Έμμ΄ μ°μ°μ μννλλ‘ νλ€.
VI. μ¬μ© μ΄μ
String, StringBuffer, StringBuilder ν΄λμ€λ λ¬Έμμ΄μ μ²λ¦¬νκΈ° μν λ€μν ν΄λμ€μ λλ€. νμ§λ§, κ°κ°μ ν΄λμ€λ λ€μν νΉμ§κ³Ό μ©λλ₯Ό κ°μ§κ³ μμ΅λλ€. μ΄λ² μΉμ μμλ κ° ν΄λμ€μ μ¬μ© μ΄μ μ λν΄ μμΈν μ€λͺ ν΄λ³΄κ² μ΅λλ€.
1. String ν΄λμ€μ μ¬μ© μ΄μ
String ν΄λμ€λ Javaμμ κ°μ₯ μΌλ°μ μΌλ‘ μ¬μ©λλ λ¬Έμμ΄ μ²λ¦¬ ν΄λμ€μ λλ€. μλλ String ν΄λμ€μ μ¬μ© μ΄μ μ λν μ€λͺ μ λλ€.
- String κ°μ²΄λ λΆλ³(immutable) μμ±μ κ°μ§κ³ μμ΅λλ€. μ¦, ν λ² μμ±λ λ¬Έμμ΄μ λ³κ²½ν μ μμ΅λλ€. μ΄λ¬ν νΉμ§μ μμ μ±κ³Ό μμΈ‘ κ°λ₯μ±μ λμ λλ€.
- λ©ν°μ€λ λ νκ²½μμ μμ νκ² μ¬μ©ν μ μμ΅λλ€. μ€λ λ κ°μ 곡μ λλ λ°μ΄ν°λ‘ μ¬μ©ν¨μΌλ‘μ¨ λκΈ°ν λ¬Έμ λ₯Ό λ°©μ§ν μ μμ΅λλ€.
- λ¬Έμμ΄ μ°μ°μ΄ νμν κ²½μ°, μλ‘μ΄ String κ°μ²΄κ° μμ±λ©λλ€. κΈ°μ‘΄ κ°μ²΄μ λ΄μ©μ΄ λ³κ²½λμ§ μμ μκΈ°μΉ μμ κ²°κ³Όλ₯Ό λ°©μ§ν μ μμ΅λλ€.
- λ΄λΆμ μΌλ‘ λ¬Έμμ΄ λ¦¬ν°λ΄ ν(string literal pool)μ΄λΌλ μμμ μ¬μ©νμ¬ λμΌν λ¬Έμμ΄μ 곡μ ν©λλ€. μ΄λ₯Ό ν΅ν΄ λμΌν λ¬Έμμ΄μ λν λ©λͺ¨λ¦¬ μ¬μ©λμ μ΅μ νν μ μμ΅λλ€.
2. StringBuffer ν΄λμ€μ μ¬μ© μ΄μ
StringBuffer ν΄λμ€λ λ¬Έμμ΄μ κ°λ³μ μΌλ‘ μ²λ¦¬νκΈ° μν΄ μ¬μ©λλ ν΄λμ€λ‘, λ©ν°μ€λ λ νκ²½μμ μμ νκ² μ¬μ©ν μ μμ΅λλ€. μλλ StringBuffer ν΄λμ€μ μ¬μ© μ΄μ μ λν μ€λͺ μ λλ€.
- StringBuffer κ°μ²΄λ κ°λ³μ μΈ μμ±μ κ°μ§λλ€. λ°λΌμ, ν λ² μμ±λ κ°μ²΄μ λ΄μ©μ λ³κ²½ν μ μμ΄ λ¬Έμμ΄ μ°μ°μ μ μ°νκ² μνν μ μμ΅λλ€.
- λ¬Έμμ΄ μ°μ°μ΄ λΉλ²ν λ°μνλ κ²½μ°μ μ μ©ν©λλ€. StringBuffer ν΄λμ€λ κΈ°μ‘΄ κ°μ²΄μ λ΄μ©μ λ³κ²½νλ―λ‘, μλ‘μ΄ κ°μ²΄λ₯Ό μμ±νμ§ μμλ λ©λλ€. μ΄λ₯Ό ν΅ν΄ λ©λͺ¨λ¦¬ μ¬μ©λκ³Ό μ±λ₯μ κ°μ ν μ μμ΅λλ€.
- λ©ν°μ€λ λ νκ²½μμ μμ νκ² μ¬μ©ν μ μμ΅λλ€. μ¬λ¬ μ€λ λκ° λμμ StringBuffer κ°μ²΄λ₯Ό μ¬μ©νμ¬ λ¬Έμμ΄ μ°μ°μ μνν΄λ, λκΈ°ν μ²λ¦¬λ₯Ό ν΅ν΄ μκΈ°μΉ μμ κ²°κ³Όλ₯Ό λ°©μ§ν μ μμ΅λλ€.
3. StringBuilder ν΄λμ€μ μ¬μ© μ΄μ
StringBuilder ν΄λμ€λ StringBufferμ κΈ°λ₯μ μΌλ‘ λμΌνμ§λ§, μ€λ λ λκΈ°νλ₯Ό κ³ λ €νμ§ μμ΅λλ€. μλλ StringBuilder ν΄λμ€μ μ¬μ© μ΄μ μ λν μ€λͺ μ λλ€.
- μ±κΈμ€λ λ νκ²½μμ λ¬Έμμ΄ μ°μ°μ μνν λ μ¬μ©ν©λλ€. μ€λ λ λκΈ°νλ₯Ό κ³ λ €νμ§ μκΈ° λλ¬Έμ StringBuilderλ StringBufferλ³΄λ€ μ±λ₯μ μΈ μ΄μ μ΄ μμ΅λλ€.
- λ¬Έμμ΄ μ°μ°μ΄ λΉλ²ν λ°μνλ κ²½μ°μ μ μ©ν©λλ€. StringBuilder ν΄λμ€λ κΈ°μ‘΄ κ°μ²΄μ λ΄μ©μ λ³κ²½νλ―λ‘, μλ‘μ΄ κ°μ²΄λ₯Ό μμ±νμ§ μμλ λ©λλ€. μ΄λ₯Ό ν΅ν΄ λ©λͺ¨λ¦¬ μ¬μ©λκ³Ό μ±λ₯μ κ°μ ν μ μμ΅λλ€.
- λ©ν°μ€λ λ νκ²½μμ μ¬μ©νκΈ° μν΄μλ μ§μ λκΈ°ν μ²λ¦¬λ₯Ό ν΄μ£Όμ΄μΌ ν©λλ€.
μ μ ν λ¬Έμμ΄ μ²λ¦¬ ν΄λμ€λ₯Ό μ ννμ¬ μ¬μ©ν¨μΌλ‘μ¨, λ©λͺ¨λ¦¬ μ¬μ©λκ³Ό μ±λ₯μ μ΅μ νν μ μμ΅λλ€. μν©μ λ§λ ν΄λμ€λ₯Ό μ ννμ¬ λ¬Έμμ΄ μ°μ°μ μννμΈμ.
λκΈ