StringBufferํด๋์ค
StringBuffer๋ String์ฒ๋ผ ๋ฌธ์ํ ๋ฐฐ์ด(char [])์ ๋ด๋ถ์ ์ผ๋ก ๊ฐ์ง๊ณ ์๋ค.
๊ทธ๋ฌ๋, String๊ณผ ๋ฌ๋ฆฌ ๋ด์ฉ์ ๋ณ๊ฒฝํ ์ ์๋ค. (mutable)
์ ์์ ์ฒ๋ผ StringBuffer๋ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํด์ ์ฃผ์๋ฅผ ๋ฐ๊พธ๋ ๊ฒ์ด ์๋,
๊ทธ๋ฅ append()๋ฅผ ํตํด์ ์๊ธฐ ์์ ์ ๋ด์ฉ์ ๋ณ๊ฒฝํ ์ ์๋ค.
ํ์ง๋ง ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ๋ค. ๋ฐฐ์ด์ ๊ณต๊ฐ์ด ๋ถ์กฑํ๋ฉด ์๋ก์ด ๋ฐฐ์ด์ ์์ฑํด์ผ ํ๋ค.
๋ง์ฝ์ ๊ธธ์ด๊ฐ 5์ธ arr๋ฐฐ์ด์์ append()๋ฅผ ํตํ์ฌ 6์ ์ถ๊ฐํ๋ ค๊ณ ํ๋ค๋ฉด,
๋ฐฐ์ด์ ๊ธธ์ด๊ฐ ๋ถ์กฑํ๊ธฐ์ ์๋ก์ด ๋ฐฐ์ด ๊ฐ์ฒด๊ฐ ์์ฑ์ด ๋๊ณ , arr์์๋ ๋ด์ฉ์ด ์๋ก์ด ๋ฐฐ์ด์ ๋ณต์ฌ๊ฐ ๋๋ค.
๊ทธ๋ฆฌ๊ณ , arr์ ๊ธฐ์กด์ ๊ฐ์ฒด์ฃผ์๋ฅผ ๋ฒ๋ฆฌ๊ณ , ๋ณต์ฌ๋ ์๋ก์ด ๋ฐฐ์ด์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋๋ค.
StringBuffer๋ ์ ์ฅํ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๊ณ ๋ คํด์ ์ ์ ํ ํฌ๊ธฐ๋ก ์์ฑํด์ผ ํ๋ค.
์ด๋ ๊ฒ StringBuffer ์์ฑ์์ ๋งค๊ฐ๋ณ์๋ก ๊ธธ์ด๋ฅผ ๊ฐ์ด ์ ๋ฌํ๊ฒ ๋๋ฉด ํด๋น ๊ธธ์ด๋งํผ์ ๋ฐฐ์ด์ด ์์ฑ๋๋ค.
๋ง์ฝ ๋งค๊ฐ๋ณ์๋ก ๊ธธ์ด๋ฅผ ์ ๋ฌํ์ง ์์ผ๋ฉด 16 ๊ธธ์ด์ ๋ฐฐ์ด์ด ์์ฑ์ด ๋๋ฉฐ,
๋งค๊ฐ๋ณ์๋ก ๋ฌธ์์ด์ ์ ๋ฌํ ๊ฒฝ์ฐ์๋ ์ง์ ํ ๋ฌธ์์ด์ ๊ธธ์ด๋ณด๋ค 16์ด ๋ ํฌ๊ฒ ๋ฒํผ๋ฅผ ์์ฑํ๋ค.
StringBuffer์ ์ฌ์ฉํ๋ฉด์ ์ฃผ์ํ ์ ์ StringBuffer๋ equals()๊ฐ ์ค๋ฒ๋ผ์ด๋ฉ๋์ด์์ง ์๋ค.(์ฃผ์ ๋น๊ต)
์ด๋ ๊ฒ equals๊ฐ ์ค๋ฒ๋ผ์ด๋ฉ ๋์ด์์ง ์๊ธฐ ๋๋ฌธ์ ๋ฑ๊ฐ ๋น๊ต(==)๋ equals()๋ฅผ ์ฌ์ฉํด๋ false๊ฐ ์ถ๋ ฅ์ด ๋๋ค.
๊ทธ๋ ๊ธฐ์ ๋น๊ต๋ฅผ ํ๊ธฐ ์ํด์๋ StringBuffer์ String์ผ๋ก ๋ณํํ ํ์ equals()๋ก ๋น๊ตํด์ผ ํ๋ค.
์ด๋ ๊ฒ toString()์ ํตํด์ String์ผ๋ก ๋ณํ ํ equals()๋ก ๋น๊ต๋ฅผ ํ๋ฉด true๊ฐ ์ถ๋ ฅ์ด ๋๋ค.
์ด ์ ์ ์ฃผ์ํ๋๋ก ํ์.
StringBuffer์ ์์ฑ์์ ๋ฉ์๋
StringBuffer()๋ ๊ธธ์ด๊ฐ 16์ธ StringBuffer ๋ฐฐ์ด์ ์์ฑํ๋ค.
StringBuffer(int length)๋ ๋งค๊ฐ๋ณ์๋ก ์ง์ ๋ ๊ฐ์์ ๋ฌธ์๋ฅผ ๋ด์ ์ ์๋ ๋ฐฐ์ด์ ์์ฑํ๋ค.
์ฌ๋งํ๋ฉด ๊ธธ์ด๋ฅผ ์ง์ ์ง์ ํด์ฃผ๋๋ก ํ๋ ๊ฒ์ด ์ข๋ค.
StringBuffer(String str)๋ ๋งค๊ฐ๋ณ์๋ก ์ง์ ๋ ๋ฌธ์์ด + 16 ๊ธธ์ด์ ๋ฐฐ์ด์ ์์ฑํ๋ค.
StringBuffer append()๋ ๋งค๊ฐ๋ณ์๋ก ์ ๋ ฅ๋ ๊ฐ์ ๋ฌธ์์ด๋ก ๋ณํํ์ฌ
StringBuffer์ธ์คํด์ค(๋ฐฐ์ด)์ ์ ์ฅํ๊ณ ์๋ ๋ฌธ์์ด์ ๋ค์ ๋ง๋ถ์ธ๋ค.
int capacity()๋ StringBuffer์ธ์คํด์ค(๋ฐฐ์ด) ๋ฒํผ ํฌ๊ธฐ(๊ธธ์ด)๋ฅผ ์๋ ค์ค๋ค.
length()๋ ๋ฒํผ(๋ฐฐ์ด)์ ๋ด๊ธด ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ์๋ ค์ค๋ค. ์ฐจ์ด๋ฅผ ๊ธฐ์ตํ์.
char charAt(int index)๋ ์ง์ ๋ ์์น(index)์ ์๋ ๋ฌธ์๋ฅผ ๋ฐํํ๋ค. (String์ด๋ ๊ฐ๋ค.)
StringBuffer delete(int start, int end)๋ ์์ ์์น(start)๋ถํฐ ๋ ์(end) ์ฌ์ด์ ์๋ ๋ฌธ์๋ฅผ ์ ๊ฑฐํ๋ค.
์ฃผ์ํ ์ ์ ๋ ์์น(end)์ ๋ฌธ์๋ ์ ์ธ๋๋ค.
StringBuffer deleteCharAt(int index)๋ ์ง์ ๋ ์์น(index)์ ๋ฌธ์๋ฅผ ์ ๊ฑฐํ๋ค.
StringBuffer insert()๋ ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์ ๊ฐ์ ๋ฌธ์์ด๋ก ๋ฐํํ์ฌ ์ง์ ๋ ์์น(pos)์ ์ถ๊ฐํ๋ค.
pos๋ 0๋ถํฐ ์์ํ๋ค.
int length()๋ StringBuffer์ธ์คํด์ค(๋ฐฐ์ด)์ ์ ์ฅ๋์ด ์๋ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๋ฐํํ๋ค.
StringBuffer replace(int start, int end, String str)๋ ์ง์ ๋ ์์น(start~end)์ ๋ฌธ์๋ค์ ์ฃผ์ด์ง ๋ฌธ์์ด๋ก ๋ฐ๊พผ๋ค.(์นํ)
end์์น์ ๋ฌธ์๋ ๋ฒ์์ ํฌํจ๋์ง ์๋๋ค.(start ≤ x ๏ผ end)
StringBuffer reverse()๋ StringBuffer์ธ์คํด์ค(๋ฐฐ์ด)์ ์ ์ฅ๋์ด ์๋ ๋ฌธ์์ด์ ์์๋ฅผ ๊ฑฐ๊พธ๋ก ๋์ดํ๋ค.(๋ฌธ์์ด ๋ค์ง๊ธฐ)
void setCharAt(int index, char ch)๋ ์ง์ ๋ ์์น์ ๋ฌธ์๋ฅผ ์ฃผ์ด์ง ๋ฌธ์(ch)๋ก ๋ณ๊ฒฝํ๋ค.
void setLength(int newLength)๋ ๋งค๊ฐ๋ณ์๋ก ์ง์ ๋ ๊ธธ์ด๋ก ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๋ณ๊ฒฝํ๋ค.
๊ธธ์ด๋ฅผ ๊ธฐ์กด ๋ฌธ์์ด์ ๊ธธ์ด๋ณด๋ค ๋๋ฆฌ๋ ๊ฒฝ์ฐ์๋ ๋๋จธ์ง ๋น ๊ณต๊ฐ์ ๋๋ฌธ์ '\u0000'๋ก ์ฑ์ด๋ค.(๊ณต๋ฐฑ)
String toString()๋ StringBuffer๋ฅผ String์ผ๋ก ๋ณ๊ฒฝํ๋ค.
String substring(int start), (int start, int end)๋ ์ง์ ๋ ๋ฒ์ ๋ด์ ๋ฌธ์์ด์ String์ผ๋ก ๋ฝ์์ ๋ฐํํ๋ค.
์์ ์์น(start)๋ง ์ง์ ํ๋ฉด ์์ ์์น๋ถํฐ ๋๊น์ง ๋ฝ์์ ๋ฐํํ๋ค.
end๋ ๋ฒ์์ ํฌํจ๋์ง ์๋๋ค.(start ≤ x ๏ผ end)