[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 ํด๋์ค์ ์ฐจ์ด์ ์ ์์๋ดค๋ค.
์ ์ฌ์ ์์ ์๋ง์ ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ง๋ง ์กฐ๊ทธ์ด๋๋ง ์ข์ ํ๋ก๊ทธ๋จ์ ๋ง๋๋๋ฐ
๋์์ ์ค ์ ์์ ๊ฑฐ ๊ฐ๋ค.