Coding Planet
String, StringBuffer, StringBuilder์ ์ฐจ์ด์ ๊ณผ ์ฌ์ฉ๋ฐฉ๋ฒ, ์ ์ฉํ ๋ฉ์๋ ๋ณธ๋ฌธ
๐ป Java Study/Java ์ด๋ก ์ ๋ฆฌ
String, StringBuffer, StringBuilder์ ์ฐจ์ด์ ๊ณผ ์ฌ์ฉ๋ฐฉ๋ฒ, ์ ์ฉํ ๋ฉ์๋
jhj.sharon 2023. 8. 24. 22:42๋ฐ์ํ
`String`, `StringBuffer`, `StringBuilder`๋ ๋ชจ๋ Java์์ ๋ฌธ์์ด์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ํด๋์ค์ด๋ค. ๊ฐ ํด๋์ค์ ํน์ง๊ณผ ์ฐจ์ด์ ์ ๋ํด ๊ณต๋ถํ๋ค.
| String
- ๋ถ๋ณ์ฑ (Immutability):
String
ํด๋์ค์ ๊ฐ์ฅ ํฐ ํน์ง์ ํ ๋ฒ ์์ฑ๋String
๊ฐ์ฒด๋ ๋ถ๋ณ์ด๋ค. ์ฆ,String
์ ์ด๋ค ๋ณํ๋ฅผ ์ฃผ๋ ค๊ณ ์๋ก์ดString
๊ฐ์ฒด๊ฐ ์์ฑ๋๋ค. ์ด๋ฌํ ๋ถ๋ณ์ฑ์ ํน์ ์ํฉ์์๋ ์์ ์ฑ์ ์ ๊ณตํ์ง๋ง, ๋ฌธ์์ด ์กฐ์ ์์ ์ด ๋น๋ฒํ๊ฒ ์ผ์ด๋ ๋๋ ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค. - ์์: ๋ฌธ์์ด ์ฐ๊ฒฐ (
+
์ฐ์ฐ์ ์ฌ์ฉ)์ ํ ๋๋ง๋ค ์๋ก์ดString
๊ฐ์ฒด๊ฐ ์์ฑ๋๋ค.
| StringBuffer
- ๊ฐ๋ณ์ฑ (Mutability):
StringBuffer
๋ ๋ฌธ์์ด์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์กฐ์ํ ๋ ๊ธฐ์กด ๊ฐ์ฒด์ ๋ด์ฉ์ ๋ฐ๋ก ๋ณ๊ฒฝํ ์ ์๋ค. ๋ฐ๋ผ์ ๋ฌธ์์ด ์ฐ์ฐ์ด ๋น๋ฒํ๊ฒ ๋ฐ์ํ๋ ์ํฉ์์ ์ฑ๋ฅ ํฅ์์ ์ป์ ์ ์๋ค. - ๋๊ธฐํ (Synchronization):
StringBuffer
์ ๋ฉ์๋๋ค์ ๋๊ธฐํ๋์ด ์๋ค. ๋ฐ๋ผ์ ๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ์์๋ ์์ ํ๊ฒ ์ฌ์ฉํ ์ ์๋ค. ํ์ง๋ง ๋จ์ผ ์ค๋ ๋ ํ๊ฒฝ์์๋ ๋ถํ์ํ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ ์ ์๋ค. String
์์ ์ง์ํ์ง ์๋ ์ ์ฉํ ๋ฉ์๋๋ค์ ๊ฐ์ง๊ณ ์๋ค. -> ์ฝํ ์์ ๋ง์ด ์
//append():StringBuffer์ ๋์ ์ฃผ์ด์ง ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ
StringBuffer sb = new StringBuffer("Hello");
sb.append(" World"); // "Hello World"
//insert():์ง์ ๋ ์์น์ ์ฃผ์ด์ง ๋ฐ์ดํฐ๋ฅผ ์ฝ์
StringBuffer sb = new StringBuffer("Hello World");
sb.insert(6, "Java "); // "Hello Java World"
//delete():์์ ์ธ๋ฑ์ค๋ถํฐ ๋ ์ธ๋ฑ์ค ์ ๊น์ง์ ๋ฌธ์์ด ๋ถ๋ถ์ ์ญ์
StringBuffer sb = new StringBuffer("Hello Java World");
sb.delete(6, 11); // "Hello World"
//deleteCharAt():์ง์ ๋ ์์น์ ๋ฌธ์๋ฅผ ์ญ์
StringBuffer sb = new StringBuffer("Hello World");
sb.deleteCharAt(5); // "HelloWorld"
//replace():๋ฌธ์์ด ๋ค์ง๊ธฐ
StringBuffer sb = new StringBuffer("Hello World");
sb.reverse(); // "dlroW olleH"
| StringBuilder
- ๊ฐ๋ณ์ฑ (Mutability):
StringBuilder
์ญ์StringBuffer
์ฒ๋ผ ๋ฌธ์์ด ์กฐ์ ์ ๊ธฐ์กด ๊ฐ์ฒด์ ๋ด์ฉ์ ๋ณ๊ฒฝํ๋ค. ๋ฐ๋ผ์ ๋ฌธ์์ด ์ฐ์ฐ์ด ๋น๋ฒํ ๋ ์ฑ๋ฅ ํฅ์์ ์ป์ ์ ์๋ค. - ๋๊ธฐํ ์์:
StringBuilder
๋StringBuffer
์ ๋ฌ๋ฆฌ ๋๊ธฐํ๋์ด ์์ง ์๋ค. ๋ฐ๋ผ์ ๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ์์๋ ์์ ํ์ง ์์ ์ ์์ง๋ง, ๋จ์ผ ์ค๋ ๋ ํ๊ฒฝ์์๋StringBuffer
๋ณด๋ค ๋ ๋น ๋ฅธ ์ฑ๋ฅ์ ์ ๊ณตํ๋ค. - StringBuilder๋ StringBuffer์ ๋งค์ฐ ์ ์ฌํ๋ฉฐ, ๋์ผํ API๋ฅผ ๋๋ถ๋ถ ๊ฐ์ง๊ณ ์๋ค.
| ์ฐจ์ด์ ์์ฝ
- ๋ถ๋ณ์ฑ vs ๊ฐ๋ณ์ฑ:
String
์ ๋ถ๋ณ,StringBuffer
์StringBuilder
๋ ๊ฐ๋ณ - ๋๊ธฐํ:
StringBuffer
๋ ๋๊ธฐํ๋์ด ์์ด ๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ์์ ์์ ํ๋ ์ฑ๋ฅ์ ๋ถ๋ฆฌํ ์ ์๋ค. ๋ฐ๋ฉด,StringBuilder
๋ ๋๊ธฐํ๋์ด ์์ง ์์ ๋จ์ผ ์ค๋ ๋ ํ๊ฒฝ์์ ๋ ๋น ๋ฅธ ์ฑ๋ฅ์ ์ ๊ณตํ๋ค.
**์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์๋๋ฆฌ์ค:
- ๋ฌธ์์ด ๋ณ๊ฒฝ ์์
์ด ๋น๋ฒํ์ง ์์ ๊ฒฝ์ฐ:
String
- ๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ์์ ๋ฌธ์์ด ๋ณ๊ฒฝ ์์
์ด ๋น๋ฒํ ๊ฒฝ์ฐ:
StringBuffer
- ๋จ์ผ ์ค๋ ๋ ํ๊ฒฝ์์ ๋ฌธ์์ด ๋ณ๊ฒฝ ์์
์ด ๋น๋ฒํ ๊ฒฝ์ฐ:
StringBuilder
๋ฐ์ํ
'๐ป Java Study > Java ์ด๋ก ์ ๋ฆฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฐ์ ์ ์ ]๋๋ค์(Lambda Expressions) 1 - ๋๋ค์ ๊ตฌ์กฐ์ ์์ฑ๋ฒ (0) | 2023.08.26 |
---|---|
[Java] length vs length()์ ์ฐจ์ด (0) | 2023.08.26 |
Wrapper ํด๋์ค์ ๊ธฐ๋ฅ๊ณผ ์์ (0) | 2023.08.21 |
[์ดํํฐ๋ธ ์๋ฐ]chapter2 : [์์ดํ 7] ๋ค ์ด ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํด์ ํ๋ผ (0) | 2023.08.19 |
Jar ํ์ผ๊ณผ War ํ์ผ์ด๋? ์ฐจ์ด์ ๋! (0) | 2023.08.17 |
Comments