[JAVA] String Pool

뚜밍·2024λ…„ 4μ›” 23일
0

JAVA

λͺ©λ‘ 보기
4/4

πŸ’‘ λ¬Έμžμ—΄ ν’€(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()λ₯Ό μ‚¬μš©ν•˜μ—¬ 동등성 비ꡐλ₯Ό 해야함.

λ¬Έμžμ—΄ 풀이 μ €μž₯λ˜λŠ” μœ„μΉ˜ ?

λ¦¬ν„°λŸ΄λ‘œ μƒμ„±ν•œ λ¬Έμžμ—΄μ€ νž™ μ˜μ—­ λ‚΄ λ¬Έμžμ—΄ 풀에 μ €μž₯λœλ‹€.

πŸ“ŽμΆœμ²˜ https://www.javatpoint.com/string-pool-in-java

profile
μ„±μž₯ν•˜κ³ μ‹Άμš΄ κ°­μ•Œμž πŸ₯ΊπŸ”₯

0개의 λŒ“κΈ€