์ด ๊ธฐ์ฌ์์๋ ํด๋์ค์ ์ถ๊ฐ ๋ฉ์๋์ ์
์, ์์ฌํ ์ฌ์ง์์ด ์ด ์ง๋ฌธ์ ๊น์ด ๋ค์ด๊ฐ์ง ์์ ์ฌ๋์ ๋ค์๊ณผ ๊ฐ์ด ๋งํ ๊ฒ์
๋๋ค: "์ ์์ ํ ๋ค๋ฅธ ํด๋์ค์ ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ += ์ฐ์ฐ์๋ฅผ ๋์ฒดํ ๋ค์ ๋ฉ์๋๋ ํธ์ถํด์ผ ํฉ๋๊น
StringBuilder
์ฐ์ฐ์ ์ ์ฐจ์ด์ ์ด ๋ฌด์์ธ์ง ๊ณ ๋ คํ๊ณ ๋ถ์ํ๊ณ ์ค๋ช
ํ๊ณ ๋ณด์ฌ์ฃผ๊ณ ์ถ์ต๋๋ค . ์ฌ๊ธฐ์ ์ง๋ฌธ์ ์ฝ๋ ์ต์ ํ๋งํผ ์ ์ฉ ์์ญ์ ๊ดํ ๊ฒ์ด ์๋๋๋ค. +=
String
toString()
? ์ฐ๋ฆฌ๋ ์ด๋ค ์ข
๋ฅ์ ์ต์ ์ฑ์
๋๊น? ๋ฌด์จ ๋ง์ ํ๋ ๊ฑฐ์ผ? ์ ํ์ ๋ปํ๋ฐ ๋ฌด์จ ์๋ฆฌ๋ฅผ ํ๋ ๊ฑฐ์ผ?โ ๊ทธ๋ฌ๋ฉด ๊ทธ๋ ์์ ํ ํ๋ ธ์ ๊ฒ์
๋๋ค. ๋ฌธ์ ์ค ํ๋๋ String
์์์ ์ด์ง ์๋ค๋ ๊ฒ์
๋๋ค. String
- Java์ ๋ค๋ฅธ ๊ฐ์ฒด class
์ ๋ง์ฐฌ๊ฐ์ง๋ก Java์๋ ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ(์: C++์์์ ๊ฐ์ด)๊ณผ ๊ฐ์ ๊ฒ์ด ์์ผ๋ฉฐ ์ฐ์ฐ์๋ ๊ธฐ๋ณธ ์์์ ๋ํด์๋ง ์ ์๋๋ฉฐ ๋ชจ๋ ํด๋์ค์ ๋ํด ์ด๋ค ์ฐ์ฐ์๋ ์ฌ์ ์ํ ์ ์์ต๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ์ฐ์ฐ์ " +
" ๋ฐ " +
= "๊ฐ Java ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ผ์ข
์ "๋ฒํ๋ชฉ"์ด๊ณ ๋ฒํ๋ชฉ์ด ํญ์ ์์ค์ ์ด๋ํ๋ ์ด์ ์
๋๋ค. ์ค์ ๋ก ๊ณ ์์ด ๊ผฌ๋ฆฌ ๋น๊ธฐ๋ ๊ฒ์ ๋ฉ์ถ๊ณ ์ธก์ ์ผ๋ก ๋์ด ๊ฐ์๋ค. ๋ค์์ ๋ฃจํ ๋ณ์๊ฐ 100,000๋ฒ ์๋ ๋ผ์ธ์ "์ ์ฐฉ"ํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ธก์ ํ๋ ๊ฐ๋จํ ํ๋ก๊ทธ๋จ์
๋๋ค.
public class MainClass
{
private static long time;
public static void main(String[] args)
{
saveTime();
String s = "Hello";
for(int i = 0; i < 100000; ++i)
{
s+=i;
}
printDiff();
}
private static void saveTime()
{
time = System.currentTimeMillis();
}
private static void printDiff()
{
System.out.println((System.currentTimeMillis() - time) + "ms");
}
}
๋ด ์ปดํจํฐ์ ์ฝ์์๋ 6815ms๊ฐ ํ์๋์์ต๋๋ค. ์ฆ, ๋ด ์ปดํจํฐ๊ฐ ์ด ์ ์ ์ฐ๊ฒฐํ๋ ๋ฐ ๊ฑฐ์ 7์ด๊ฐ ๊ฑธ๋ ธ์ต๋๋ค. toString()
์ด์ ์ด๋ฅผ StringBuilder๋ก ๋ฐ๊พธ๊ณ ์ธก์ ์ ๋ฉ์๋๋ฅผ ํฌํจํด ๋ณด๊ฒ ์ต๋๋ค .
public class MainClass
{
private static long time;
public static void main(String[] args)
{
saveTime();
StringBuilder sb = new StringBuilder("Hello");
for(int i = 0; i < 100000; ++i)
{
sb.append(i);
}
String s = sb.toString();
printDiff();
}
private static void saveTime()
{
time = System.currentTimeMillis();
}
private static void printDiff()
{
System.out.println((System.currentTimeMillis() - time) + "ms");
}
}
๋ด PC์์ 10ms๋ผ๊ณ ํ์ด์. ์ฆ, 0.01์ด์
๋๋ค. ์ค์ ๋ก ๋ณด๋ฉด ์ฐจ์ด๊ฐ ๊ฝค ๋๋ ๊ฒ ๊ฐ์๋ฐ, ๋๋ต์ ์ผ๋ก ๋งํ๋ฉด 700๋ฐฐ append
๋ ๋น ๋ฅด๊ฒ ์๋ํ์ต๋๋ค. +
์ด๋ " " ๋ฐ " +=
" ์์ฒด๊ฐ ๋์ผํ ์ถ๊ฐ๋ฅผ ํธ์ถํ ์ ์์ง๋ง ๋์์ ๊ทธ๋ฌํ ์ฐ์ฐ์๊ฐ ์กด์ฌํ๊ณ ๋ฌด์์ธ์ง ์ดํดํ๊ธฐ ์ํด ์ธ์ด์ ๋ชฉ๋ฐ์ ํตํด ๋จผ ๊ธธ์ ๊ฐ๊ธฐ ๋๋ฌธ์
๋๋ค . ํด์ผ ํฉ๋๋ค(๋ง์ง๋ง ๋จ๋ฝ์ ์ถ์ธก์ผ ๋ฟ์
๋๋ค. ์ ๋ JVM ๊ฐ๋ฐ์๊ฐ ์๋๋ฉฐ ๊ฑฐ๊ธฐ์ ๋ฌด์์ด ์๊ณ ์ด๋ป๊ฒ ์๋์ง ๋ชจ๋ฆ
๋๋ค). ์ด๋ ์ถ๊ฐ ๊ฐ์ฒด๊ฐ ํญ์ ๋น์ฉ์ด ๋ง์ด ๋๋ ๊ฒ์ ์๋๋ผ๋ ์ฌ์ค์ ๋ณด์ฌ์ฃผ๋ ๋ช
ํํ ์์
๋๋ค. ์, ์ฝ๋๋ ๋ช ์ค ๋ ๊ธธ์ด์ง์ง๋ง ๋๊ท๋ชจ ํ๋ก์ ํธ์์๋ ์์ฒญ๋ ์๊ฐ ์ ์ฝ ํจ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค. ์ ์ฌ ์๋ ํ๋ก์ธ์๊ฐ ํ์ฌ๋ ์ฌ๋ฌด์ฉ PC์์๋ ์ธก์ ํ ๊ฒ์ด ์๋์ง๋ง ์ด์ ์ค์นดํ๋ฅผ ๊ฑฐ์ ๋น๊ธธ ์ ์๋ ๋ฐ๋ก ์ด ์ฌ๋ฌด์ฉ ์ปดํจํฐ์์ ์ด๋ค ๋ณํ๊ฐ ์๊ธธ์ง ์์ํด ๋ณด์ธ์.
GO TO FULL VERSION