[Java] String, StringBuffer, StringBuilder์˜ ์ฐจ์ด์ 

์˜ค๋Š˜์€ ๊ฐ„๋‹จํ•˜๊ฒŒ String, StringBuffer, StringBuilder์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค ํ•œ๋‹ค.

๋ง‰์—ฐํ•˜๊ฒŒ ์ฝ”๋”ฉ์„ ํ•˜๋‹ค ๋ณด๋ฉด ๋ฌธ์ž์—ด ๊ด€๋ จ๋ผ์„œ๋Š” String์„ ์ž์ฃผ ์“ฐ๊ฒŒ ๋œ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ธํ„ฐ๋„ท์— ๋– ๋„๋Š” ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ์–ด๋–ค ๊ฑด StringBuffer ๋˜ ๋‹ค๋ฅธ ๊ฑด StringBuilder์„ ์‚ฌ์šฉํ•œ ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋ฌธ๋“ ๊ทธ ์„ธ๊ฐ€์ง€์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด์„œ ๊ถ๊ธˆํ–ˆ๊ณ 

๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” String์€ immutable(๋ถˆ๋ณ€)ํ•˜๊ณ  StringBuffer, StringBuilder๋Š” mutable(๊ฐ€๋ณ€)ํ•˜๋‹ค.

์–ด๋–ค ์ƒํ™ฉ์—์„œ ์–ด๋–ค ํƒ€์ž…์˜ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ์ง€ ํšจ์œจ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๋ ค ํ•œ๋‹ค.

String

์ผ๋‹จ ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ๋Š” ๊ฑธ๋กœ ์•Œ๊ณ  ์žˆ๋Š” String ํด๋ž˜์Šค์ด๋‹ค.

String ๊ฐ์ฒด๋ฅผ ์„ ์–ธํ•˜๋ฉด JVM์˜ Heap ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์„ฑ์ด ๋˜๋Š”๋ฐ ์—ฌ๊ธฐ์„œ

String ๊ฐ์ฒด๋ฅผ concat์ด๋‚˜ + ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ๋ฌธ์ž์—ด์„ ๋ณ€๊ฒฝํ•ด๋„

ํ•ด๋‹น ๊ฐ์ฒด์˜ ๊ณต๊ฐ„์ด ๋Š˜์–ด๋‚˜์ง€ ์•Š๊ณ  ๋‹ค์‹œ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑ๋œ๋‹ค.

์ด๋ ‡๊ฒŒ ๋ฌด์ž‘์œ„ ํ•˜๊ฒŒ String ๊ฐ์ฒด์— ๋ฌธ์ž์—ด ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด

Heap ๋ฉ”๋ชจ๋ฆฌ์— ๊ณผ๋ถ€ํ•˜๊ฐ€ ์˜ค๊ณ  ๋ฌธ์ œ์ ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ถˆ๋ณ€ํ•˜๋‹ค๋ณด๋‹ˆ ์กฐํšŒ์—ฐ์‚ฐ์ž์—์„œ๋Š” ๋น ๋ฅธ ์†๋„๋ฅผ ๋ณด์ธ๋‹ค.

StringBuffer

StringBuffer๋Š” ์ด๋Ÿฌํ•œ String์˜ ๋ฌธ์ž์—ด ์—ฐ์‚ฐ์˜ ๋ถˆ๋ณ€์„ฑ๊ณผ๋Š” ๋ฐ˜๋Œ€๋กœ

๊ฐ€๋ณ€ ํ•˜๋‹ค StringBuffer ํด๋ž˜์Šค๋กœ ๋งŒ๋“ค์–ด์ง„ ๊ฐ์ฒด์— ๋ฌธ์ž์—ด ์—ฐ์‚ฐ์„ ํ•˜๋ฉด

ํ•ด๋‹น ๊ฐ์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ’์„ ๋ณ€๊ฒฝ์‹œ์ผœ ๋ฌธ์ž์—ด์„ ๋ณ€๊ฒฝํ•œ๋‹ค.

์ด๋Ÿฌํ•˜๋‹ค ๋ณด๋‹ˆ ์•„๋ฌด๋ž˜๋„ ๋ฌธ์ž์—ด ์—ฐ์‚ฐ์ด ์ž์ฃผ ์ผ์–ด๋‚˜๋Š” ๊ฐ์ฒด์—๋Š”

StringBuffer ํด๋ž˜์Šค ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ์ข€ ๋” ํšจ์œจ์ ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

StringBuilder

๋งˆ์ง€๋ง‰์œผ๋กœ StringBuilder๋Š” StringBuffer์™€ ํฌ๊ฒŒ ๋‹ค๋ฅธ ์ ์ด ์—†์œผ๋‚˜

๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์œผ๋กœ๋Š” ๋™๊ธฐํ™” ์—ฌ๋ถ€์ด๋‹ค.

StringBuilder๋Š” ๋™๊ธฐํ™”๊ฐ€ ๋˜์ง€ ์•Š์•„ ์‹ฑ๊ธ€์Šค ๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ์ ํ•ฉํ•˜๊ณ 

StringBuffer๋Š” ๋™๊ธฐํ™”๊ฐ€ ๊ฐ€๋Šฅํ•ด ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ™˜๊ฒฝ์— ์ ํ•ฉํ•˜๋‹ค.


๊ฐ„๋‹จํ•˜๊ฒŒ String, StringBuffer, StringBuilder ํด๋ž˜์Šค์˜ ์ฐจ์ด์ ์„ ์•Œ์•„๋ดค๋‹ค.

์ ์žฌ์ ์†Œ์— ์•Œ๋งž์€ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ ์ง€๋งŒ ์กฐ๊ทธ์ด๋‚˜๋งˆ ์ข‹์€ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š”๋ฐ

๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์„ ๊ฑฐ ๊ฐ™๋‹ค.

๋‹ค๋ฅธ ๊ธ€ ์ฝ์–ด๋ณด๊ธฐ โฌ‡๏ธ