๊ด€๋ฆฌ ๋ฉ”๋‰ด

GO SIWOO!

[Java] Java String Pool์ด๋ž€? ๋ณธ๋ฌธ

Develop/์ž๋ฐ”(Java)

[Java] Java String Pool์ด๋ž€?

gosiwoo 2023. 2. 27. 14:57

๐Ÿ“ŒJava String ๊ฐ์ฒด์˜ ์ƒ์„ฑ ๋ฐฉ์‹

Java์˜ String ๊ฐ์ฒด๋Š” ๋‘ ๊ฐ€์ง€ ์ƒ์„ฑ ๋ฐฉ์‹์ด ์žˆ๋‹ค.

1. new ์—ฐ์‚ฐ์ž ์ด์šฉ
  Heap ์˜์—ญ์— ์กด์žฌ 
  ex) String str = new String("์ŠคํŠธ๋ง");

2. literal์„ ์ด์šฉํ•œ ๋ฐฉ์‹
  String Constant Pool์ด๋ผ๋Š” ์˜์—ญ์— ์กด์žฌ
  ex) String str = "์ŠคํŠธ๋ง"; 

 

 

๐Ÿ“ŒJava String Pool

Java String์˜ ์ƒ์„ฑ 2๊ฐ€์ง€ ๋ฐฉ์‹

Literal๋กœ String ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ํ•ด๋‹น String ๊ฐ์ฒด์˜ ๊ฐ’์€ ์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด Heap ์˜์—ญ ๋‚ด์˜ String constatns Pool ์ด๋ผ๋Š” ๊ณณ์— ์ €์žฅ๋œ๋‹ค. ์ด ์˜์—ญ์— ์ €์žฅ์ด ๋˜๋ฉด String ๊ฐ’์€ ๋ถˆ๋ณ€์„ฑ์„ ์ง€๋‹ˆ๊ณ  ์ด ๋ถˆ๋ณ€์„ฑ์€ ๋‹ค๋ฅธ String ๊ฐ์ฒด๋ฅผ ์„ ์–ธํ•  ๋•Œ์—๋„ String Pool๋‚ด์˜ ๊ฐ™์€ ๊ณณ์„ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋œ๋‹ค. 

 

ํ•˜์ง€๋งŒ new ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Heap ์˜์—ญ์— ์ €์žฅ์ด ๋˜์ง€๋งŒ String constans Pool์— ์ €์žฅ๋˜์ง€ ๋ชปํ•˜๊ณ  ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€๋ฅดํ‚ค์ง€ ๋ชปํ•œ๋‹ค.

 

String Pool์— ๊ฐ™์€ ๊ณณ์„ ๊ฐ€๋ฅดํ‚ค๊ณ  ์žˆ๋Š” ๋•๋ถ„์— ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์—†์ด ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ด์ ์ด ์žˆ๋‹ค.

 

class Main {
    public static void main(String[] args) {
        String str1 = "cat";
        String str2 = "cat";
        String str3 = new String("cat");
        String str4 = new String("cat");

        System.out.println(str1 == str2); // true
        System.out.println(str3 == str4); // false
        System.out.println(str1 == str3); // false
    }
}