1. ๋ฌธ์ž์—ด ์ˆ˜์ •

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

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

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

์ด๊ฒƒ์ด ๋ฐ”๋กœ 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()
๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ๋ฌธ์ž๋กœ ๋ฐ˜ํ™˜

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


2. ๋ฐฉ๋ฒ• ์„ค๋ช…:

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

๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ๋ฌธ์ž์—ด( 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


3. ๋ฌธ์ž์—ด ์ž‘์—…์˜ ์œ ์šฉํ•œ ์˜ˆ

์–ด๋–ป๊ฒŒ ๋ฌธ์ž์—ด์„ ๋ฐ˜์ „ํ•ฉ๋‹ˆ๊นŒ?

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

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

StringBuffer์ˆ˜์—…

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

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