์ด ์ ๊ฒ์๊ธ '๋ฌธ์์ด'์์ String์ ํน์ฑ๊ณผ ํจ๊ป StringBuilder์ StringBuffer๋ฅผ ์ธ๊ธํ ์ ์ด ์์ต๋๋ค. ์ด ์ ๊ฒ์๊ธ์์ ์๊ฐํ๋ค์ํผ StringBuilder์ StringBuffer๋ String์ธ์คํด์ค์ ๊ฒฐํฉ ์์
์ด ์์ฃผ ๋ฐ์ํ ๋ ๋ฉ๋ชจ๋ฆฌ๊ณต๊ฐ์ ์ถ๊ฐ์ ์ผ๋ก ๊ณ์ ์ฌ์ฉํ๊ฒ๋ฉ๋๋ค.
๋ฐ๋ฉด์ StringBuilder์ StringBuffer๋ ๋ด๋ถ์ ์ผ๋ก ๋ฌธ์์ด ํธ์ง์ ์ํ ๋ฒํผ(buffer)๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋ ๊ทธ ํฌ๊ธฐ๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
StringBufferํด๋์ค๋ ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋ ๋ฌธ์์ด์ ์ ์ฅํ๊ณ ํธ์งํ๊ธฐ ์ํ ๊ณต๊ฐ(buffer)์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์ธ์คํด์ค์ ๋ฒํผ ํฌ๊ธฐ๋ฅผ ์ง์ ํด์ฃผ์ง ์์ผ๋ฉด default๊ฐ์ผ๋ก ์ธ์คํด์ค ์์ฑ ์ ์ฌ์ฉ์๊ฐ ์ค์ ํ ํฌ๊ธฐ๋ณด๋ค ์ธ์ ๋ 16๊ฐ์ ๋ฌธ์๋ฅผ ๋ ์ ์ฅํ ์ ์๋๋ก ์ฌ์ ์๊ฒ ์์ฑ๋ฉ๋๋ค.
String์ฒ๋ผ ์ธ์คํด์ค๋ฅผ ๊ณ์ ์์ฑํ์ง ์๊ณ StringBuffer์ธ์คํด์ค๋ฅผ ์ฌ์ฉํด์ ๋ฌธ์์ด์ ๋ฐ๋ก ์์ ํ๊ณ ์ ์ฅํ๋ฉด ๊ณต๊ฐ์ ๋ญ๋น๊ฐ ์๊ณ ์๋๋ ๋งค์ฐ ๋น ๋ฆ
๋๋ค.๋ค์์ผ๋ก StringBuffer๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์๋ ๋ฉ์๋๋ฅผ ์์๋ณด๊ฒ ์ต๋๋ค.
StringBufferํด๋์ค๋ ์๋์ ๋ชจ์์ผ๋ก ์ธ์คํด์คํ ์ํฌ ์ ์์ต๋๋ค.
StringBuffer sb = new StringBuffer("java");append() ๋ฉ์๋๋ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋ ๊ฐ์ ๋ฌธ์์ด๋ก ๋ณํ ํ, ํด๋น ๋ฌธ์์ด์ ๋ค์ ์ถ๊ฐํฉ๋๋ค. ์ด ์ ์ ๋ณธ Stringํด๋์ค์ concat() ๋ฉ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค. ํ์ง๋ง ๋ด๋ถ์ ์ธ ์ฒ๋ฆฌ ์๋ก append()๋ฉ์๋๊ฐ ํจ์ฌ ๋น ๋ฆ ๋๋ค.
StringBuffer str = new StringBuffer("Java");
str.append(" SpringFramework");
System.out.println(str); // "Java SpringFramework"capacity() ๋ฉ์๋๋ StringBuffer ์ธ์คํด์ค์ ํ์ฌ ๋ฒํผ ํฌ๊ธฐ๋ฅผ ๋ฐํํ๋ ๋ฉ์๋ ์ ๋๋ค.
StringBuffer sb1 = new StringBuffer();
StringBuffer sb2 = new StringBuffer("Java");
StringBuffer sb3 = new StringBuffer(10);
System.out.println(sb1.capacity()); // 16
System.out.println(sb2.capacity()); // 20
System.out.println(sb3.capacity()); // 10delete() ๋ฉ์๋๋ ๋งค๊ฐ๋ณ์์ ํด๋นํ๋ ์ธ๋ฑ์ค ์ฌ์ด์ ์๋ ๋ฌธ์์ด์ ์ ๊ฑฐํฉ๋๋ค. deleteCharAt() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ง์ ๋ index์ ๋ฌธ์๋ฅผ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
StringBuffer sb = new StringBuffer("Java Spring");
System.out.println(sb.delete(4, 8)); // "Javaing"
System.out.println(sb.deleteCharAt(1)); // "Jvaing"insert() ๋ฉ์๋๋ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋ ์ธ๋ฑ์ค ์์น์ ์ ๋ฌ๋ ๋ฌธ์์ด์ ์ถ๊ฐํฉ๋๋ค.
StringBuffer sb = new StringBuffer("Java React!");
sb.insert(4, "Script");
System.out.println(sb); // "JavaScript React!"StringBuffer๋ ๋ฉํฐ์ฐ๋ ๋(Multi-thread)์ ์์ ํ๋๋ก ๋๊ธฐํ๋์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๊ธฐํ๋ StringBuffer์ ์ฑ๋ฅ์ ๋จ์ด๋จ๋ฆด ์ ๋ฐ์ ์์ต๋๋ค. ๊ทธ๋์ ๋ฉํฐ์ค๋ ๋๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ์ด ์๋ ๊ฒฝ์ฐ ๋ถํ์ํ๊ฒ ์ฑ๋ฅ๋ง ๋จ์ด๋จ๋ฆฌ๊ฒ ๋ฉ๋๋ค.
StringBuilder๋ StringBuffer์์ ์ฐ๋ ๋์ ๋๊ธฐํ๋ง ์ ์ธํ๊ณ ์์ ํ ๋๊ฐ์ ๊ธฐ๋ฅ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ํ์ง๋ง ๋ฐ๋์ ํ์ํ ๊ฒฝ์ฐ๊ฐ ์๋๊ณ ์๋ ์ผ๋ถ๋ฌ ์ฌ์ฉํ ํ์๋ ์์ต๋๋ค.
StringBuilder sb = new StringBuilder();