CodeGym /ํ–‰๋™ /All lectures for KO purposes /Java์—์„œ ๋ฌธ์ž์—ด ์ž‘์—…์„ ์œ„ํ•œ ํŽธ์˜ ํด๋ž˜์Šค

Java์—์„œ ๋ฌธ์ž์—ด ์ž‘์—…์„ ์œ„ํ•œ ํŽธ์˜ ํด๋ž˜์Šค

All lectures for KO purposes
๋ ˆ๋ฒจ 1 , ๋ ˆ์Šจ 549
์‚ฌ์šฉ ๊ฐ€๋Šฅ

Codegym University ๊ณผ์ •์˜ ์ผ๋ถ€๋กœ ๋ฉ˜ํ† ์™€ ํ•จ๊ป˜ํ•˜๋Š” ๊ฐ•์˜ ์Šค๋‹ˆํŽซ. ์ „์ฒด ๊ณผ์ •์— ๋“ฑ๋กํ•˜์‹ญ์‹œ์˜ค.


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

"๋ฐ”๋กœ ๋งํ•˜์ง€ ์•Š์„๊ฒŒ, ์—˜๋ฆฌ. ํ•˜์ง€๋งŒ ๋„ˆ๋Š” ๋‚˜์—๊ฒŒ ๋งํ• ๊ฑฐ์•ผ, ๊ทธ๋ ‡์ง€?"

split()๋ฐฉ๋ฒ•

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

์˜ˆ:

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

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

"๊ธ€์Ž„์š”. ๊ทธ๋ฆฌ๊ณ  ์ฝ๊ธฐ ์–ด๋ ต๋‹ค๋ฉด ๋ณ€๊ฒฝํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

StringTokenizer์ˆ˜์—…

Codegym University ๊ณผ์ •์˜ ์ผ๋ถ€๋กœ ๋ฉ˜ํ† ์™€ ํ•จ๊ป˜ํ•˜๋Š” ๊ฐ•์˜ ์Šค๋‹ˆํŽซ. ์ „์ฒด ๊ณผ์ •์— ๋“ฑ๋กํ•˜์‹ญ์‹œ์˜ค.


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

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

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

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

"์ด ํด๋ž˜์Šค๋Š” ์™ ์ง€ ์Šค์บ๋„ˆ ํด๋ž˜์Šค๋ฅผ ๋– ์˜ฌ๋ฆฌ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด ํด๋ž˜์Šค์—๋„ nextLine()๋ฉ”์„œ๋“œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค hashNextLine().

"์ž˜ ๊ด€์ฐฐํ•˜์…จ์Šต๋‹ˆ๋‹ค. StringTokenizer๋‹ค์Œ ๋ช…๋ น์œผ๋กœ ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

StringTokenizer name = new StringTokenizer(string, 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๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.

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.}");

"์ฝ”๋“œ๊ฐ€ ๊ฐ€๋…์„ฑ์ด ์ข‹์ง€ ์•Š๋‹ค๋Š” ์ ์— ๋™์˜ํ•˜์‹ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ณ€์ˆ˜ ์ด๋ฆ„์ด ๋” ๊ธธ๋ฉด ์ฝ”๋“œ๊ฐ€ ํ›จ์”ฌ ๋” ์–ด๋ ค์›Œ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

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

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

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

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

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

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

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

์•”ํ˜ธ StringPoll ์ž‘์—…
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"๊ทธ๋ฆฌ๊ณ  using the method ์— ๋‘ ๊ฐœ์˜ ๋™์ผํ•œ ๋ฌธ์ž์—ด์ด ์ถ”๊ฐ€๋˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š” 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

์ด ๋ฐฉ๋ฒ•์„ ์ž์ฃผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์‚ฌ๋žŒ๋“ค์€ ๋ฉด์ ‘์—์„œ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋ฌป๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.

"๊ทธ๋ž˜์„œ ๋ชจ๋ฅด๋Š” ๊ฒƒ๋ณด๋‹ค ์•„๋Š” ๊ฒƒ์ด ๋‚ซ์Šต๋‹ˆ๋‹ค. ๊ณ ๋งˆ์›Œ์š”, ์—˜๋ฆฌ!"

์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION