"์•ˆ๋…•ํ•˜์„ธ์š”, ์•„๋ฏธ๊ณ !"

"์•ˆ๋…•, ๋ฆฌ์‹œ!"

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

"ํฅ๋ฏธ๋กญ๊ฒŒ ๋“ค๋ฆฌ์ง€๋งŒ ์ผ๋ฐ˜ ๋ฌธ์ž์—ด์ด ์–ด๋–ป๊ฒŒ ๋ถ€์กฑํ•˜๊ณ  ๋‹ค๋ฅธ ๋ฌธ์ž์—ด๊ณผ ๊ฐ™์€ ํด๋ž˜์Šค๊ฐ€ ํ•„์š”ํ•œ์ง€ ์™„์ „ํžˆ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."

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

"์–ด๋•Œ์š”? ์žŠ์–ด๋ฒ„๋ ธ์–ด์š”... ์•„๋‹ˆ๋ฉด ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ชฐ๋ž์–ด์š”..."

"๋ถˆ๋ณ€ ๊ฐ์ฒด๋Š” ์ƒ์„ฑ๋œ ํ›„์— ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ๊ฐ์ฒด๋ผ๋Š” ์ ์„ ์ƒ๊ธฐ์‹œ์ผœ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค."

"์•„... Java์—์„œ ๋ฌธ์ž์—ด์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?"

"์ด๊ฒƒ์€ String ํด๋ž˜์Šค๋ฅผ ๊ณ ๋„๋กœ ์ตœ์ ํ™”ํ•˜๊ณ  ๋ชจ๋“  ๊ณณ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด HashMap ์ปฌ๋ ‰์…˜์˜ ํ‚ค๋กœ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ์œ ํ˜•๋งŒ ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค .

"๊ทธ๋Ÿฌ๋‚˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ String ํด๋ž˜์Šค๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ๋” ํŽธ๋ฆฌํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์ƒํ™ฉ์ด ์ข…์ข… ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋ฉ”์„œ๋“œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ๋งˆ๋‹ค ์ƒˆ ํ•˜์œ„ ๋ฌธ์ž์—ด์„ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š” ํด๋ž˜์Šค๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค."

"๊ทผ๋ฐ ๋ญ๊ฐ€ ์ข‹์€๋ฐ?"

"์Œ, ์•„์ฃผ ํฐ ๋ฌธ์ž์—ด์ด ์žˆ๊ณ  ๊ทธ ๋์— ๋ฌด์–ธ๊ฐ€๋ฅผ ์ž์ฃผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ด…์‹œ๋‹ค. ์ด ๊ฒฝ์šฐ์—๋Š” ๋ฌธ์ž ๋ชจ์Œ( )์ด ์ง€์†์ ์œผ๋กœ ArrayList<Character>๋ฌธ์ž์—ด ๊ฐœ์ฒด๋ฅผ ๋‹ค์‹œ ๋งŒ๋“ค๊ณ  ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

"๊ทธ๋ž˜์„œ String ํด๋ž˜์Šค๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž์—ด์ด ํ•„์š”ํ•œ ๊ฑฐ์ฃ ?"

"๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. Java ์–ธ์–ด์— ๋ฌธ์ž์—ด๊ณผ ๊ฐ™์€ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ์œ ํ˜•์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. StringBuilder"๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ์ฒด ๋งŒ๋“ค๊ธฐ

"๊ธฐ์กด ๋ฌธ์ž์—ด์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด StringBuilder๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น๋ฌธ์„ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

StringBuilder name = new StringBuilder(string);

"๋นˆ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น๋ฌธ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

StringBuilder name = new StringBuilder();

๋ฐฉ๋ฒ• ๋ชฉ๋ก

"์ด StringBuilder์ˆ˜์—…์—๋Š” 24๊ฐ€์ง€ ์œ ์šฉํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฐฉ๋ฒ• ์„ค๋ช…
StringBuilder append(obj)
์ „๋‹ฌ๋œ ๊ฐ์ฒด๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ํ˜„์žฌ ๋ฌธ์ž์—ด์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
StringBuilder insert(int index, obj)
์ „๋‹ฌ๋œ ๊ฐ์ฒด๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ํ˜„์žฌ ๋ฌธ์ž์—ด์˜ ์ค‘๊ฐ„์— ์‚ฝ์ž…
StringBuilder replace(int start, int end, String str)
start..end ๊ฐ„๊ฒฉ์œผ๋กœ ์ง€์ •๋œ ๋ฌธ์ž์—ด ๋ถ€๋ถ„์„ ์ „๋‹ฌ๋œ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
StringBuilder deleteCharAt(int index)
๋ฌธ์ž์—ด์—์„œ ์ง€์ •๋œ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€์ง„ ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
StringBuilder delete(int start, int end)
๋ฌธ์ž์—ด์—์„œ ์ง€์ •๋œ ๊ฐ„๊ฒฉ ๋‚ด์˜ ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
int indexOf(String str, int index)
ํ˜„์žฌ ๋ฌธ์ž์—ด์—์„œ ํ•˜์œ„ ๋ฌธ์ž์—ด์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
int lastIndexOf(String str, int index)
๋์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ํ˜„์žฌ ๋ฌธ์ž์—ด์—์„œ ํ•˜์œ„ ๋ฌธ์ž์—ด์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
char charAt(int index)
์ „๋‹ฌ๋œ ์ธ๋ฑ์Šค์— ์žˆ๋Š” ๋ฌธ์ž์—ด์˜ ๋ฌธ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
String substring(int start, int end)
์ง€์ •๋œ ๊ฐ„๊ฒฉ์œผ๋กœ ์ •์˜๋œ ํ•˜์œ„ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
StringBuilder reverse()
ํ˜„์žฌ ๋ฌธ์ž์—ด์„ ๋’ค์ง‘์Šต๋‹ˆ๋‹ค.
void setCharAt(int index, char)
์ง€์ •๋œ ์ธ๋ฑ์Šค์˜ ๋ฌธ์ž๋ฅผ ์ „๋‹ฌ๋œ ๋ฌธ์ž๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
int length()
๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ๋ฌธ์ž๋กœ ๋ฐ˜ํ™˜

"์ด์ œ ๊ฐ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ž์—ด์— ์ถ”๊ฐ€

"๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ๋ฌธ์ž์—ด( StringBuilder) ์— ๋ฌด์–ธ๊ฐ€๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด append()๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ์˜ˆ:

์•”ํ˜ธ ์„ค๋ช…
StringBuilder builder = new StringBuilder("Hi");
builder.append("Bye");
builder.append(123);
Hi
HiBye
HiBye123

ํ‘œ์ค€ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜

" StringBuilder๊ฐœ์ฒด๋ฅผ String ๊ฐœ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๋ฉด ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค toString(). ์˜ˆ

์•”ํ˜ธ ์‚ฐ์ถœ
StringBuilder builder = new StringBuilder("Hi");
builder.append(123);
String result = builder.toString();
System.out.println(result);
Hi123

์บ๋ฆญํ„ฐ๋Š” ์–ด๋–ป๊ฒŒ ์‚ญ์ œํ•˜๋‚˜์š”?

"๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ๋ฌธ์ž์—ด์—์„œ ๋ฌธ์ž๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค deleteCharAt(). ์˜ˆ:

์•”ํ˜ธ ์‚ฐ์ถœ
StringBuilder builder = new StringBuilder("Hello");
builder.deleteCharAt(2);
String result = builder.toString();
System.out.println(result);
Helo

๋ฌธ์ž์—ด์˜ ์ผ๋ถ€๋ฅผ ๋‹ค๋ฅธ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ฉ๋‹ˆ๊นŒ?

"์ด๋ฅผ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค replace(int begin, int end, String str). ์˜ˆ:

์•”ํ˜ธ ์‚ฐ์ถœ
StringBuilder builder = new StringBuilder("Mellow");
builder.replace(2, 5, "Hello!");
String result = builder.toString();
System.out.println(result);
MeHello!w

"ํŽธ๋ฆฌํ•˜๊ตฐ์š”. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, ๋ฆฌ์‹œ."

"๋งํ•˜์ง€ ๋งˆ. ์ด๊ฑด ์–ด๋•Œ, ์ค„์„ ๊ฑฐ๊พธ๋กœ ๋’ค์ง‘์„ ์ˆ˜ ์žˆ์–ด? ์–ด๋–ป๊ฒŒ ํ•  ๊ฑด๋ฐ?"

"๊ธ€์Ž„... ๋‚˜๋Š” ์„ ์ƒ์„ฑํ•˜๊ณ  StringBuilder๊ทธ ์•ˆ์— ๋ฌธ์ž์—ด์„ ๋„ฃ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค... ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ƒˆ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค๊ณ  ๋งˆ์ง€๋ง‰ ๋ฌธ์ž์—์„œ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž๊นŒ์ง€ ๋ฃจํ”„์—์„œ... ์•„๋‹ˆ๋ฉด ๋น„ํŠธ ์‹œํ”„ํŠธ...

"๋‚˜์˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋” ๋น ๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•œ ํŠน๋ณ„ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค โ€” reverse();์˜ˆ:

์•”ํ˜ธ ์‚ฐ์ถœ
String str = "Hello";
StringBuilder builder = new StringBuilder(str);
builder.reverse();
String result = builder.toString();
System.out.println(result);
olleH

" StringBuilderํด๋ž˜์Šค ์™ธ์—๋„ Java์—๋Š” ์ด๋ผ๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ž์—ด๊ณผ ์œ ์‚ฌํ•œ ํด๋ž˜์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค StringBuffer. ํด๋ž˜์Šค์™€ ์œ ์‚ฌ StringBuilderํ•˜์ง€๋งŒ ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋Š” ์ˆ˜์‹์–ด๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค synchronized."

"๊ทธ๊ฒŒ ๋ฌด์Šจ ๋œป์ด์•ผ?"

StringBuffer" ๊ฐœ์ฒด๊ฐ€ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ์—์„œ ๋™์‹œ์— ์•ก์„ธ์Šค๋  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค ."

"์ €๋Š” ์•„์ง ์Šค๋ ˆ๋“œ์— ์ต์ˆ™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ '์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ์—์„œ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Œ'์ด '์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ์—์„œ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Œ'๋ณด๋‹ค ๋ถ„๋ช…ํžˆ ๋‚ซ์Šต๋‹ˆ๋‹ค... ๊ทธ๋Ÿผ ํ•ญ์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? StringBuffer"

"๋ณด๋‹ค ํ›จ์”ฌ ๋Š๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค . Java MultithreadingStringBuilder ํ€˜์ŠคํŠธ ์—์„œ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์„ ์ ๊ทน์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๊ธฐ ์‹œ์ž‘ํ•  ๋•Œ ์ด๋Ÿฌํ•œ ํด๋ž˜์Šค๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค .

"์žŠ์ง€ ์•Š๋„๋ก ๊ธฐ์–ต์— ๋‚จ๊ธธ๊ฒŒ์š”. '๋ฏธ๋ž˜๋ฅผ ์œ„ํ•ด'๋ผ๊ณ  ํ‘œ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.