1. StringTokenizerํด๋ž˜์Šค

์ด์ œ ๋ฌธ์ž์—ด ์ž‘์—…๊ณผ ๊ด€๋ จ๋œ ๋ช‡ ๊ฐ€์ง€ ์ผ๋ฐ˜์ ์ธ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด์„ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์œผ๋กœ ์–ด๋–ป๊ฒŒ ๋ถ„ํ• ํ•ฉ๋‹ˆ๊นŒ? ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

split()๋ฐฉ๋ฒ•

๋ฌธ์ž์—ด์„ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์œผ๋กœ ๋ถ„ํ• ํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ ์ด split()๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŠน์ˆ˜ ๊ตฌ๋ถ„ ๋ฌธ์ž์—ด์„ ์ •์˜ํ•˜๋Š” ์ •๊ทœ์‹์„ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Java Multithreading ํ€˜์ŠคํŠธ ์—์„œ ์ •๊ทœ ํ‘œํ˜„์‹์ด ๋ฌด์—‡์ธ์ง€ ๋ฐฐ์šฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค .

์˜ˆ:

์•”ํ˜ธ ๊ฒฐ๊ณผ
String str = "Good news everyone!";
String[] strings = str.split("ne");
System.out.println(Arrays.toString(strings));
๊ฒฐ๊ณผ๋Š” ์„ธ ๋ฌธ์ž์—ด์˜ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.
["Good ", "ws everyo", "!"]

๊ฐ„๋‹จํ•˜์ง€๋งŒ ๋•Œ๋กœ๋Š” ์ด ์ ‘๊ทผ ๋ฐฉ์‹์ด ๊ณผ๋„ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ๋ถ„ ๊ธฐํ˜ธ(์˜ˆ: ๊ณต๋ฐฑ, ๊ฐœํ–‰ ๋ฌธ์ž, ํƒญ, ๋งˆ์นจํ‘œ)๊ฐ€ ๋งŽ์œผ๋ฉด ๋‹ค์†Œ ๋ณต์žกํ•œ ์ •๊ทœ์‹์„ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฝ๊ธฐ ์–ด๋ ค์šฐ๋ฏ€๋กœ ์ˆ˜์ •ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

StringTokenizer์ˆ˜์—…

Java์—๋Š” ์ „์ฒด ์ž‘์—…์ด ๋ฌธ์ž์—ด์„ ํ•˜์œ„ ๋ฌธ์ž์—ด๋กœ ๋ถ„ํ• ํ•˜๋Š” ํŠน์ˆ˜ ํด๋ž˜์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํด๋ž˜์Šค๋Š” ์ •๊ทœ์‹์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋กœ ๊ตฌ์„ฑ๋œ ๋ฌธ์ž์—ด์„ ์ „๋‹ฌํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์˜ ์žฅ์ ์€ ์ „์ฒด ๋ฌธ์ž์—ด์„ ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ ์กฐ๊ฐ์œผ๋กœ ๋‚˜๋ˆ„์ง€ ์•Š๊ณ  ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ํ•œ ๋ฒˆ์— ํ•œ ๋‹จ๊ณ„์”ฉ ์ด๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ํด๋ž˜์Šค์—๋Š” ์ƒ์„ฑ์ž์™€ ๋‘ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ถ€๋ถ„์œผ๋กœ ๋ถ„ํ• ํ•œ ๋ฌธ์ž์—ด๊ณผ ์ผ๋ จ์˜ ๊ตฌ๋ถ„ ๋ฌธ์ž๋กœ ๊ตฌ์„ฑ๋œ ๋ฌธ์ž์—ด์„ ์ƒ์„ฑ์ž์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

ํ–‰๋™ ์–‘์‹ ์„ค๋ช…
String nextToken()
๋‹ค์Œ ํ•˜์œ„ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
boolean hasMoreTokens()
ํ•˜์œ„ ๋ฌธ์ž์—ด์ด ๋” ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์ด ํด๋ž˜์Šค๋Š” ์–ด๋–ป๊ฒŒ๋“  ์Šค์บ๋„ˆ ํด๋ž˜์Šค๋ฅผ ์—ฐ์ƒ์‹œํ‚ค๋ฉฐ ๋ฉ”์„œ๋“œ๋„ nextLine()์žˆ์Šต๋‹ˆ๋‹ค hasNextLine().

StringTokenizer๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค .

StringTokenizer name = new StringTokenizer(string, delimiters);

string๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆŒ ๋ฌธ์ž์—ด์€ ์–ด๋””์— ์žˆ์Šต๋‹ˆ๊นŒ? And delimiters๋Š” ๋ฌธ์ž์—ด์ด๋ฉฐ ๊ทธ ์•ˆ์˜ ๊ฐ ๋ฌธ์ž๋Š” ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ:

์•”ํ˜ธ ์ฝ˜์†” ์ถœ๋ ฅ
String str = "Good news everyone!";

StringTokenizer tokenizer = new StringTokenizer(str,"ne");
while (tokenizer.hasMoreTokens())
{
   String token = tokenizer.nextToken();
   System.out.println(token);
}
Good 
ws 
v
ryo
!

๋‘ ๋ฒˆ์งธ ๋ฌธ์ž์—ด๋กœ ์ƒ์„ฑ์ž์— ์ „๋‹ฌ๋œ ๋ฌธ์ž์—ด์˜ ๊ฐ ๋ฌธ์ž๋Š” StringTokenizer๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.



2. String.format()๋ฉ”์†Œ๋“œ ๋ฐ StringFormatterํด๋ž˜์Šค

String ํด๋ž˜์Šค์˜ ๋˜ ๋‹ค๋ฅธ ํฅ๋ฏธ๋กœ์šด ๋ฐฉ๋ฒ•์€ format().

๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•œ ์ค„๋กœ ํ™”๋ฉด์— ์–ด๋–ป๊ฒŒ ํ‘œ์‹œํ•ฉ๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด ์ผ๋ถ€ ๋ฐ์ดํ„ฐ(์™ผ์ชฝ ์—ด)์™€ ์›ํ•˜๋Š” ์ถœ๋ ฅ(์˜ค๋ฅธ์ชฝ ์—ด)์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์•”ํ˜ธ ์ฝ˜์†” ์ถœ๋ ฅ
String name = "Amigo";
int age = 12;
String friend = "Diego";
int weight = 200;
User = {name: Amigo, age: 12 years, friend: Diego, weight: 200 kg.}

์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ
String name = "Amigo";
int age = 12;
String friend = "Diego";
int weight = 200;

System.out.println("User = {name: " + name + ", age:" + age + " years, friend: " + friend+", weight: " + weight + " kg.}");

์ด๋Ÿฌํ•œ ์ฝ”๋“œ๋Š” ๊ฐ€๋…์„ฑ์ด ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ณ€์ˆ˜ ์ด๋ฆ„์ด ๋” ๊ธธ๋ฉด ์ฝ”๋“œ๊ฐ€ ํ›จ์”ฌ ๋” ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค.

ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ

class User {
    ......
    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public List<String> getFriends() {
        return friends;
    }

    public ExtraInformation getExtraInformation() {
        return extraInformation;
    }
}

User user = new User();

System.out.println("User = {name: " + user.getName() + ", age:" + user.getAge() + " years, friend: " + user.getFriends().get(0) + ", weight: " + user.getExtraInformation().getWeight() + " kg.}");

์ž˜ ์ฝํžˆ์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

ํ•˜์ง€๋งŒ ์ด๋Š” ์‹ค์ œ ํ”„๋กœ๊ทธ๋žจ์—์„œ ํ”ํžˆ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ์ด๋ฏ€๋กœ ์ด ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ค ๊ฐ„๋‹จํ•˜๊ณ  ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ๋ ค๋“œ๋ฆฌ๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

String.format

String ํด๋ž˜์Šค์—๋Š” ์ •์  format()๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฌธ์ž์—ด์„ ๋ฐ์ดํ„ฐ์™€ ๊ฒฐํ•ฉํ•˜๊ธฐ ์œ„ํ•œ ํŒจํ„ด์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช…๋ น์˜ ์ผ๋ฐ˜์ ์ธ ๋ชจ์–‘์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

String name = String.format(pattern, parameters);

์˜ˆ:

์•”ํ˜ธ ๊ฒฐ๊ณผ
String.format("Age=%d, Name=%s", age, name);
Age=12, Name=Amigo
String.format("Width=%d, Height=%d", width, height);
Width=20, Height=10
String.format("Fullname=%s", name);
Fullname=Diego

๋ฉ”์„œ๋“œ ์˜ ์ฒซ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•ด์•ผ ํ•˜๋Š” ์œ„์น˜์— ํ˜•์‹ ์ง€์ •์ž(์˜ˆ: ๋ฐ ) format()๋ผ๊ณ  ํ•˜๋Š” ํŠน์ˆ˜ ๋ฌธ์ž์™€ ํ•จ๊ป˜ ์›ํ•˜๋Š” ๋ชจ๋“  ํ…์ŠคํŠธ๋ฅผ ํฌํ•จํ•˜๋Š” ํ˜•์‹ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค .%d%s

์ด format()๋ฉ”์„œ๋“œ๋Š” ์ด๋“ค %s๊ณผ %dํ˜•์‹ ์ง€์ •์ž๋ฅผ ๋งค๊ฐœ ๋ณ€์ˆ˜ ๋ชฉ๋ก์—์„œ ํ˜•์‹ ๋ฌธ์ž์—ด ๋’ค์— ์˜ค๋Š” ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด์„ ์‚ฝ์ž…ํ•˜๋ ค๋ฉด %s. ์ˆซ์ž๋ฅผ ์‚ฝ์ž…ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ํ˜•์‹ ์ง€์ •์ž๋Š” ์ž…๋‹ˆ๋‹ค %d. ์˜ˆ:

์•”ํ˜ธ ๊ฒฐ๊ณผ
String s = String.format("a=%d, b=%d, c=%d", 1, 4, 3);
s๋™์ผํ•˜๋‹ค"a=1, b=4, c=3"

๋‹ค์Œ์€ ํ˜•์‹ ๋ฌธ์ž์—ด ๋‚ด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•์‹ ์ง€์ •์ž์˜ ์งง์€ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค.

์ง€์ •์ž ์˜๋ฏธ
%s
String
%d
์ •์ˆ˜: byte, short, int,long
%f
์‹ค์ˆ˜: float,double
%b
boolean
%c
char
%t
Date
%%
%์„ฑ๊ฒฉ

์ด๋Ÿฌํ•œ ์ง€์ •์ž๋Š” ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ๋‚˜ํƒ€๋‚ด์ง€๋งŒ ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ง€์ •์ž๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒˆํ˜ธ๋กœ ์ธ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด(๋ฒˆํ˜ธ๋Š” 1๋ถ€ํ„ฐ ์‹œ์ž‘) " " ๋Œ€์‹  " " ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค . ์˜ˆ:%1$d%d

์•”ํ˜ธ ๊ฒฐ๊ณผ
String s = String.format("a=%3$d, b=%2$d, c=%d", 11, 12, 13);
s๋™์ผํ•˜๋‹ค"a=13, b=12, c=11"

%3$d์„ธ ๋ฒˆ์งธ ์ธ์ˆ˜, %2$d๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜, %d์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๋ฐ ํ˜•์‹ ์ง€์ •์ž๋Š” ๋˜๋Š”์™€ ๊ฐ™์€ ์ง€์ •์ž์™€ ์ƒ๊ด€์—†์ด ์ธ์ˆ˜๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค %s.%d%3$d%2$s



3. ์ŠคํŠธ๋ง ํ’€

StringPool๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด๋กœ ์ฝ”๋“œ์— ์ง€์ •๋œ ๋ชจ๋“  ๋ฌธ์ž์—ด์€ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ์ด๋ผ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค . StringPool๋ฌธ์ž์—ด์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ํŠน์ˆ˜ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค. ๊ทธ ๋ชฉ์ ์€ ๋ฌธ์ž์—ด ์ €์žฅ์„ ์ตœ์ ํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฒซ์งธ, ์ฝ”๋“œ์— ์ง€์ •๋œ ๋ฌธ์ž์—ด์€ ์–ด๋”˜๊ฐ€์— ์ €์žฅ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ๋ช…๋ น์œผ๋กœ ๊ตฌ์„ฑ๋˜์ง€๋งŒ ๋ฐ์ดํ„ฐ(ํŠนํžˆ ํฐ ๋ฌธ์ž์—ด)๋Š” ์ฝ”๋“œ์™€ ๋ณ„๋„๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด ๊ฐœ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ๋งŒ ์ฝ”๋“œ์— ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

๋‘˜์งธ, ๋ชจ๋“  ๋™์ผํ•œ ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์€ ๋ฉ”๋ชจ๋ฆฌ์— ํ•œ ๋ฒˆ๋งŒ ์ €์žฅ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ํด๋ž˜์Šค ์ฝ”๋“œ๊ฐ€ Java ์‹œ์Šคํ…œ์— ์˜ํ•ด ๋กœ๋“œ๋˜๋ฉด ๋ชจ๋“  ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์ด StringPool์•„์ง ์—†๋Š” ๊ฒฝ์šฐ ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ ์žˆ๋Š” ๊ฒฝ์šฐ StringPool.

๋”ฐ๋ผ์„œ ์ฝ”๋“œ์˜ ์—ฌ๋Ÿฌ ๋ณ€์ˆ˜์— ๋™์ผํ•œ ๋ฆฌํ„ฐ๋Ÿด์„ ํ• ๋‹นํ•˜๋ฉด String์ด๋Ÿฌํ•œ ๋ณ€์ˆ˜์— ๋™์ผํ•œ ์ฐธ์กฐ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌํ„ฐ๋Ÿด์€ ํ•œ ๋ฒˆ๋งŒ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค StringPool. ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒฝ์šฐ์— ์ฝ”๋“œ๋Š” ์— ์ด๋ฏธ ๋กœ๋“œ๋œ ๋ฌธ์ž์—ด์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค StringPool.

์ž‘๋™ ๋ฐฉ์‹์€ ๋Œ€๋žต ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์•”ํ˜ธ StringPool ์ž‘์—…
String a = "Hello";
String b = "Hello";
String c = "Bye";
String[] pool = {"Hello", "Bye"};
a = pool[0];
b = pool[0];
c = pool[1];

a์ด๊ฒƒ์ด ๋ฐ b๋ณ€์ˆ˜๊ฐ€ ๋™์ผํ•œ ์ฐธ์กฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค .

intern()๋ฐฉ๋ฒ•

๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ์ข‹์€ ์ ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ๋ชจ๋“  ๋ฌธ์ž์—ด์„ StringPool. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด String๋ณ€์ˆ˜์˜ intern()๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋ฉ”์„œ๋“œ ๋Š” ์•„์ง ์—†๋Š” ๊ฒฝ์šฐ intern()๋ฌธ์ž์—ด์„ ์— ์ถ”๊ฐ€ํ•˜๊ณ  ์˜ ๋ฌธ์ž์—ด์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค .StringPoolStringPool

StringPool๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉ ํ•˜์—ฌ ๋‘ ๊ฐœ์˜ ๋™์ผํ•œ ๋ฌธ์ž์—ด์ด ์ถ”๊ฐ€๋˜๋ฉด intern()๋ฉ”์„œ๋“œ๋Š” ๋™์ผํ•œ ์ฐธ์กฐ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ฐธ์กฐ๋กœ ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ:

์•”ํ˜ธ ๋ฉ”๋ชจ
String a = new String("Hello");
String b = new String("Hello");
System.out.println(a == b);


false
String a = new String("Hello");
String b = new String("Hello");

String t1 = a.intern();
String t2 = b.intern();
System.out.println(a == b);
System.out.println(t1 == t2);





false
true

์ด ๋ฐฉ๋ฒ•์„ ์ž์ฃผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์ง€๋งŒ ์‚ฌ๋žŒ๋“ค์€ ์ธํ„ฐ๋ทฐ์—์„œ ์ด ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋ฌป๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค . ๋”ฐ๋ผ์„œ ๋ชจ๋ฅด๋Š” ๊ฒƒ๋ณด๋‹ค ์•„๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.