๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Note for moment

[Java] String, StringBuffer, StringBuilder

by ๐Ÿ’œautumn 2020. 9. 5.

String, StringBuffer, StringBuilder ๋ชจ๋‘ ๋ฌธ์ž์—ด์„ ๋‹ค๋ฃจ๋Š” ํด๋ž˜์Šค๋กœ

๋งŽ์€ ์—ฐ์‚ฐ์„ ๋‹ค๋ฃจ์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋Š” ์–ด๋–ค ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ์ด์Šˆ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์€ ๋‚ฎ๋‹ค.

ํ•˜์ง€๋งŒ? ์—ฐ์‚ฐ์ด ๋งŽ์•„์ง€๊ฑฐ๋‚˜ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ๋“ฑ ๋ณต์žกํ•˜๋„ ๋‹ค์–‘ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ผญ ์ƒํ™ฉ์— ๋งž๋Š” ํด๋ž˜์Šค ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•œ๋‹ค.

 

Stringํด๋ž˜์Šค์™€ StringBuffer,Builder์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ ๋ถˆ๋ณ€์˜ ์†์„ฑ์ด๋‹ค.

 

 

1.  String

 : immutable - ์ˆ˜์ •๊ณผ ์กฐ์ž‘์ด ๋ถˆ๊ฐ€๋Šฅํ•จ > ๋ถˆํ•„์š”ํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•จ(์ฆ‰ ๋ฒ„๋ ค์ง€๊ณ  ์ƒˆ๋กœ ์ƒ์„ฑ๋œ๋‹ค๋Š” ์˜๋ฏธ)

 : ๋ฌธ์ž์—ด ์ถœ๋ ฅ์ด ๋ชฉ์ ์ธ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ

 : ๋ณ€ํ•˜์ง€์•Š๋Š” ๋ฌธ์ž์—ด์„ ์ž์ฃผ ์ฝ์–ด๋“ค์ด๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ ๊ถŒ์žฅ

    โžก๏ธŽ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๊ฐ™์€ ๋ฌธ์ž์—ด์˜ CUD์—ฐ์‚ฐ์ด ๋นˆ๋ฒˆํ•œ ๊ณณ์— ์‚ฌ์šฉํ•˜๋ฉด heap๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ€๋น„์ง€๊ฐ€ ๋Š˜์–ด๋‚˜ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ค€๋‹ค.

 : ๋…ผ๋ฆฌ์—ฐ์‚ฐ์ž(==)๋Š” ์ธ์Šคํ„ด์Šค ์œ„์น˜(์ฃผ์†Œ๊ฐ’)๋งŒ ๋น„๊ต๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„๊ต๋ฅผ ์›ํ•˜๋Š” ๊ฒฝ์šฐ .equals() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค!

 

2. StringBuffer

 : String๊ณผ ๋‹ฌ๋ฆฌ ๊ฐ€๋ณ€์„ฑ(mutable)์„ ๊ฐ€์ง€๋Š” ํด๋ž˜์Šค

 : .append() .delete() ๋“ฑ์˜ API๋ฅผ ์ด์šฉํ•ด ๋™์ผ๊ฐ์ฒด๋‚ด์˜ ๋ฌธ์ž์—ด ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 : ๋™๊ธฐํ™”๋ฅผ ์ง€์›ํ•˜์—ฌ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์— ์•ˆ์ „

 

 

3. StringBuilder

 : String๊ณผ ๋‹ฌ๋ฆฌ ๊ฐ€๋ณ€์„ฑ(mutable)์„ ๊ฐ€์ง€๋Š” ํด๋ž˜์Šค

 : ๋™๊ธฐํ™”๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์•„ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Œ

 : ํ•˜์ง€๋งŒ ๋‹จ์ผ์Šค๋ ˆ๋“œ์—์„œ์˜ ์„ฑ๋Šฅ์€ buffer๋ณด๋‹ค ํ›จ์”ฌ ์šฐ์ˆ˜

 

 

 

 

* String ํด๋ž˜์Šค ๋ฉ”์†Œ๋“œ

 

* StringBuffer, StringBuilder ํด๋ž˜์Šค ๋ฉ”์†Œ๋“œ

  : append(), offset(index, str)- ๋ผ์›Œ๋„ฃ๊ธฐ, delete(ind1, ind2), deleteCharAt(ind), reverse()

 

๋Œ“๊ธ€