Skip to content

Latest commit

ย 

History

History
executable file
ยท
77 lines (53 loc) ยท 3.83 KB

File metadata and controls

executable file
ยท
77 lines (53 loc) ยท 3.83 KB

String๊ณผ StringBuffer/StringBuilder์˜ ์ฐจ์ด

์ด ์ „ ๊ฒŒ์‹œ๊ธ€ '๋ฌธ์ž์—ด'์—์„œ String์˜ ํŠน์„ฑ๊ณผ ํ•จ๊ป˜ StringBuilder์™€ StringBuffer๋ฅผ ์–ธ๊ธ‰ํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ „ ๊ฒŒ์‹œ๊ธ€์—์„œ ์†Œ๊ฐœํ–ˆ๋‹ค์‹œํ”ผ StringBuilder์™€ StringBuffer๋Š” String์ธ์Šคํ„ด์Šค์˜ ๊ฒฐํ•ฉ ์ž‘์—…์ด ์ž์ฃผ ๋ฐœ์ƒํ•  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ๊ณต๊ฐ„์„ ์ถ”๊ฐ€์ ์œผ๋กœ ๊ณ„์† ์‚ฌ์šฉํ•˜๊ฒŒ๋ฉ๋‹ˆ๋‹ค.
๋ฐ˜๋ฉด์— StringBuilder์™€ StringBuffer๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฌธ์ž์—ด ํŽธ์ง‘์„ ์œ„ํ•œ ๋ฒ„ํผ(buffer)๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๊ทธ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1. StringBuffer

StringBufferํด๋ž˜์Šค๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋ฌธ์ž์—ด์„ ์ €์žฅํ•˜๊ณ  ํŽธ์ง‘ํ•˜๊ธฐ ์œ„ํ•œ ๊ณต๊ฐ„(buffer)์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค์˜ ๋ฒ„ํผ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด default๊ฐ’์œผ๋กœ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ์‹œ ์‚ฌ์šฉ์ž๊ฐ€ ์„ค์ •ํ•œ ํฌ๊ธฐ๋ณด๋‹ค ์–ธ์ œ๋‚˜ 16๊ฐœ์˜ ๋ฌธ์ž๋ฅผ ๋” ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ฌ์œ ์žˆ๊ฒŒ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
String์ฒ˜๋Ÿผ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ณ„์† ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  StringBuffer์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฌธ์ž์—ด์„ ๋ฐ”๋กœ ์ˆ˜์ •ํ•˜๊ณ  ์ €์žฅํ•˜๋ฉด ๊ณต๊ฐ„์˜ ๋‚ญ๋น„๊ฐ€ ์—†๊ณ  ์†๋„๋„ ๋งค์šฐ ๋น ๋ฆ…๋‹ˆ๋‹ค.๋‹ค์Œ์œผ๋กœ StringBuffer๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

2. StringBufferํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šคํ™”

StringBufferํด๋ž˜์Šค๋Š” ์•„๋ž˜์˜ ๋ชจ์–‘์œผ๋กœ ์ธ์Šคํ„ด์Šคํ™” ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

StringBuffer sb = new StringBuffer("java");

3. StringBufferํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ

1. append()

append() ๋ฉ”์„œ๋“œ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ๋œ ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ ํ›„, ํ•ด๋‹น ๋ฌธ์ž์—ด์˜ ๋’ค์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ „์— ๋ณธ Stringํด๋ž˜์Šค์˜ concat() ๋ฉ”์„œ๋“œ์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‚ด๋ถ€์ ์ธ ์ฒ˜๋ฆฌ ์†๋ก append()๋ฉ”์„œ๋“œ๊ฐ€ ํ›จ์”ฌ ๋น ๋ฆ…๋‹ˆ๋‹ค.

StringBuffer str = new StringBuffer("Java");
str.append(" SpringFramework");
System.out.println(str);	// "Java SpringFramework"

2. capacity()

capacity() ๋ฉ”์„œ๋“œ๋Š” StringBuffer ์ธ์Šคํ„ด์Šค์˜ ํ˜„์žฌ ๋ฒ„ํผ ํฌ๊ธฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ ์ž…๋‹ˆ๋‹ค.

StringBuffer sb1 = new StringBuffer();
StringBuffer sb2 = new StringBuffer("Java");
StringBuffer sb3 = new StringBuffer(10);
System.out.println(sb1.capacity());		// 16
System.out.println(sb2.capacity());		// 20
System.out.println(sb3.capacity());		// 10

3. delete()

delete() ๋ฉ”์„œ๋“œ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ์ธ๋ฑ์Šค ์‚ฌ์ด์— ์žˆ๋Š” ๋ฌธ์ž์—ด์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. deleteCharAt() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ง€์ •๋œ index์˜ ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

StringBuffer sb = new StringBuffer("Java Spring");
System.out.println(sb.delete(4, 8));		// "Javaing"
System.out.println(sb.deleteCharAt(1));		// "Jvaing"

4. insert()

insert() ๋ฉ”์„œ๋“œ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ๋œ ์ธ๋ฑ์Šค ์œ„์น˜์— ์ „๋‹ฌ๋œ ๋ฌธ์ž์—ด์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

StringBuffer sb = new StringBuffer("Java React!");
sb.insert(4, "Script");
System.out.println(sb);	// "JavaScript React!"

4. StringBuilder

StringBuffer๋Š” ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ(Multi-thread)์— ์•ˆ์ „ํ•˜๋„๋ก ๋™๊ธฐํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋™๊ธฐํ™”๋Š” StringBuffer์˜ ์„ฑ๋Šฅ์„ ๋–จ์–ด๋œจ๋ฆด ์ˆ˜ ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์„ฑ๋Šฅ๋งŒ ๋–จ์–ด๋œจ๋ฆฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
StringBuilder๋Š” StringBuffer์—์„œ ์“ฐ๋ ˆ๋“œ์˜ ๋™๊ธฐํ™”๋งŒ ์ œ์™ธํ•˜๊ณ  ์™„์ „ํžˆ ๋˜‘๊ฐ™์€ ๊ธฐ๋Šฅ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๊ณ ์„œ๋Š” ์ผ๋ถ€๋Ÿฌ ์‚ฌ์šฉํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.

StringBuilder sb = new StringBuilder();

๐Ÿ“š Reference