π‘ λ¬Έμμ΄ ν(string pool)
javaμμ λ¬Έμμ΄ λ¦¬ν°λ΄(string literal)μ κ΄λ¦¬νλ νΉλ³ν μμμ΄λ€. λ¬Έμμ΄ νμ λ©λͺ¨λ¦¬ λ΄μ μλ λ¬Έμμ΄μ μ€λ³΅μ νΌνκΈ° μν΄ μ¬μ©λ¨.
μΌλ°μ μΌλ‘ javaμμ λ¬Έμμ΄ λ¦¬ν°λ΄μ μμ±νλ©΄ JVM(Java Virtual Machine)μ μ΄λ¬ν λ¬Έμμ΄μ λ¬Έμμ΄ νμ μ μ₯ νλ€. μ΄ λ, λμΌν λ΄μ©μ λ¬Έμμ΄μ΄ μ΄λ―Έ μ‘΄μ¬νλ κ²½μ° μλ‘μ΄ κ°μ²΄λ₯Ό μμ±νλ λμ λ¬Έμμ΄ νμμ ν΄λΉ λ¬Έμμ΄μ μ°Έμ‘°νλ€. μ΄κ²μ λ©λͺ¨λ¦¬λ₯Ό μ μ½νκ³ μ±λ₯μ ν₯μμν¨λ€.
λ¬Έμμ΄μ μμ±ν λ 'new'ν€μλλ₯Ό μ¬μ©νμ§ μκ³ λ¦¬ν°λ΄μ μ¬μ©νλ©΄ λ¬Έμμ΄ νμμ λ¬Έμμ΄μ μ°Έμ‘°νκ² λλ€.
String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");
System.out.println(str1 == str2); // true
System.out.println(str1 == str3); // false
μ μμ μμ 'str1', 'str2'λ λμΌν λ¬Έμμ΄ λ¦¬ν°λ΄μ μ°Έμ‘°νλ―λ‘ λ λ³μμ λΉκ΅λ 'true'λ₯Ό λ°ννμ§λ§ 'str3'μ μλ‘μ΄ λ¬Έμμ΄ κ°μ²΄λ₯Ό μμ±νμμΌλ―λ‘ 'str1'κ³Όλ λ€λ₯Έ κ°μ²΄λ₯Ό μ°Έμ‘°νκ² λμ΄ λΉκ΅ κ²°κ³Όλ 'false'κ° λλ€.
λ¬Έμμ΄μ κ°μ²΄λ‘ μμ±νμμ λλ λ¬Έμμ΄ νμ μ΄μ©νμ§ λͺ»νλ λ°©μμ΄λ©° λ¬Έμμ΄μ λΉκ΅ν λ String μΈμ€ν΄μ€κ° μλ‘μ΄ κ°μ²΄λ₯Ό μμ±νμ¬ λ§λ€μλμ§, λ¬Έμμ΄ λ¦¬ν°λ΄λ‘ λ§λ€μ΄μ§κ²μΈμ§ νμΈν μ μλ λ°©λ²μ΄ μλ€.
λ°λΌμ λ¬Έμμ΄μ λΉκ΅ν κ²½μ°μ νμ equals()λ₯Ό μ¬μ©νμ¬ λλ±μ± λΉκ΅λ₯Ό ν΄μΌν¨.
λ¬Έμμ΄ νμ΄ μ μ₯λλ μμΉ ?
리ν°λ΄λ‘ μμ±ν λ¬Έμμ΄μ ν μμ λ΄ λ¬Έμμ΄ νμ μ μ₯λλ€.