Java์์ ๋ฌธ์์ด์ ์ฐ๊ฒฐํ๋ ์์ ์ ๋งค์ฐ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ฅผ ๋ฌธ์์ด ์ฐ๊ฒฐ(String Concatenation)์ด๋ผ๊ณ ํ๋ฉฐ, ๋ฌธ์์ด๊ณผ ๋ฌธ์์ด์ ํฉ์น๊ฑฐ๋, ๋ฌธ์์ด๊ณผ ๋ค๋ฅธ ๋ฐ์ดํฐ ํ์ ์ ๊ฒฐํฉํ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ฒ ๊ธ์์๋ Java์์ ๋ฌธ์์ด ์ฐ๊ฒฐ์ ์ํํ๋ ๋ค์ํ ๋ฐฉ๋ฒ๊ณผ ์ฑ๋ฅ์์ ๊ณ ๋ ค์ฌํญ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
1. ๋ฌธ์์ด ์ฐ๊ฒฐ ๋ฐฉ๋ฒ
Java์์ ๋ฌธ์์ด์ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ต๋๋ค. ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ์ +
์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ฉฐ, ์ด ์ธ์๋ concat()
๋ฉ์๋, StringBuilder
, StringBuffer
์ ๊ฐ์ ํด๋์ค๋ ํ์ฉํ ์ ์์ต๋๋ค.
1.1 +
์ฐ์ฐ์
+
์ฐ์ฐ์๋ ๋ฌธ์์ด์ ์ฐ๊ฒฐํ๋ ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์
๋๋ค. ๋ฌธ์์ด๊ณผ ๋ค๋ฅธ ๋ฐ์ดํฐ ํ์
์ ํจ๊ป ์ฐ๊ฒฐํ ๋๋ ์ฌ์ฉ๋ฉ๋๋ค.
์์
public class StringPlusOperator {
public static void main(String[] args) {
String firstName = "John";
String lastName = "Doe";
String fullName = firstName + " " + lastName;
System.out.println("Full Name: " + fullName);
}
}
์ถ๋ ฅ ๊ฒฐ๊ณผ:
Full Name: John Doe
์ ์์ ์์ +
์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด firstName
๊ณผ lastName
์ ์ฐ๊ฒฐํ์ต๋๋ค.
1.2 concat()
๋ฉ์๋
concat()
๋ฉ์๋๋ String
ํด๋์ค์์ ์ ๊ณตํ๋ ๋ฉ์๋๋ก, ๋ ๋ฌธ์์ด์ ๊ฒฐํฉํฉ๋๋ค. ๋จ, null
๊ฐ์ ํฌํจํ๋ฉด ์์ธ๊ฐ ๋ฐ์ํฉ๋๋ค.
์์
public class StringConcatMethod {
public static void main(String[] args) {
String greeting = "Hello";
String target = "World";
String message = greeting.concat(", ").concat(target).concat("!");
System.out.println("Message: " + message);
}
}
์ถ๋ ฅ ๊ฒฐ๊ณผ:
Message: Hello, World!
concat()
๋ฉ์๋๋ +
์ฐ์ฐ์์ ์ ์ฌํ๊ฒ ๋ฌธ์์ด์ ์ฐ๊ฒฐํ์ง๋ง, ์ฐ์ฐ ๊ธฐํธ๋ณด๋ค ๋ช
์์ ์ด๋ผ๋ ์ ์ด ์์ต๋๋ค.
1.3 StringBuilder
์ StringBuffer
StringBuilder
์ StringBuffer
๋ ๋ฌธ์์ด์ ๊ฐ๋ณ์ ์ผ๋ก ๋ค๋ฃฐ ์ ์๋ ํด๋์ค๋ก, ๋ฌธ์์ด ์ฐ๊ฒฐ์ ๋ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ๋ ํด๋์ค์ ์ฐจ์ด์ ์ StringBuilder
๋ ๋๊ธฐํ๋ฅผ ์ง์ํ์ง ์๋ ๋ฐ๋ฉด, StringBuffer
๋ ๋๊ธฐํ๋ฅผ ์ง์ํ๋ค๋ ๊ฒ์
๋๋ค.
StringBuilder ์์
public class StringBuilderExample {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Hello");
sb.append(", ").append("World").append("!");
System.out.println("StringBuilder Result: " + sb.toString());
}
}
์ถ๋ ฅ ๊ฒฐ๊ณผ:
StringBuilder Result: Hello, World!
StringBuffer ์์
public class StringBufferExample {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer("Hello");
sb.append(", ").append("World").append("!");
System.out.println("StringBuffer Result: " + sb.toString());
}
}
์ถ๋ ฅ ๊ฒฐ๊ณผ:
StringBuffer Result: Hello, World!
์ ๋ ํด๋์ค๋ ๋๋์ ๋ฌธ์์ด ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋ ํจ์จ์ ์ด๋ฉฐ, ํนํ ๋ฐ๋ณต๋ฌธ ๋ด์์ ๋ฌธ์์ด์ ์ฐ๊ฒฐํ ๋ ์ฑ๋ฅ์์ ์ฅ์ ์ด ์์ต๋๋ค.
2. ๋ฌธ์์ด ์ฐ๊ฒฐ ์ฑ๋ฅ ๋น๊ต
๋ฌธ์์ด ์ฐ๊ฒฐ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ์ฑ๋ฅ ์ฐจ์ด๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์๋๋ ๊ฐ ๋ฐฉ๋ฒ์ ์ฑ๋ฅ ํน์ง์ ๋๋ค:
+
์ฐ์ฐ์: ๊ฐ๋จํ ์์ ์๋ ์ ํฉํ์ง๋ง, ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉํ ๊ฒฝ์ฐ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ต๋๋ค. ๋ฌธ์์ด์ด ๋ถ๋ณ(immutable)์ด๊ธฐ ๋๋ฌธ์ ๋งค๋ฒ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ๋๋ค.concat()
:+
์ฐ์ฐ์๋ณด๋ค ์กฐ๊ธ ๋ ๋ช ์์ ์ด์ง๋ง, ์ฑ๋ฅ์์ ํฐ ์ฐจ์ด๋ ์์ต๋๋ค.StringBuilder
์StringBuffer
: ๋ฌธ์์ด ๋ณ๊ฒฝ ์์ ์ด ๋ง์ ๊ฒฝ์ฐ ๊ฐ์ฅ ํจ์จ์ ์ ๋๋ค. ๋ฐ๋ณต๋ฌธ ๋ด์์ ๋ฌธ์์ด์ ์์ฃผ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ฐ๊ฒฐํ ๋ ํนํ ์ ๋ฆฌํฉ๋๋ค.
์ฑ๋ฅ ํ ์คํธ ์์
public class StringConcatenationPerformance {
public static void main(String[] args) {
long startTime, endTime;
// + ์ฐ์ฐ์
startTime = System.currentTimeMillis();
String result = "";
for (int i = 0; i < 10000; i++) {
result += i;
}
endTime = System.currentTimeMillis();
System.out.println("+ ์ฐ์ฐ์ ์๊ฐ: " + (endTime - startTime) + "ms");
// StringBuilder
startTime = System.currentTimeMillis();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10000; i++) {
sb.append(i);
}
endTime = System.currentTimeMillis();
System.out.println("StringBuilder ์๊ฐ: " + (endTime - startTime) + "ms");
}
}
์ถ๋ ฅ ๊ฒฐ๊ณผ:
+ ์ฐ์ฐ์ ์๊ฐ: 400ms
StringBuilder ์๊ฐ: 5ms
์ ํ
์คํธ์์ ๋ณผ ์ ์๋ฏ์ด, ๋ฐ๋ณต๋ฌธ ๋ด์์ ๋ฌธ์์ด์ ์ฐ๊ฒฐํ ๋ StringBuilder
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ํจ์ฌ ๋ ํจ์จ์ ์
๋๋ค.
3. ๋ฌธ์์ด ์ฐ๊ฒฐ ์ ์ฃผ์์ฌํญ
- ๋ฐ๋ณต๋ฌธ์์ + ์ฐ์ฐ์ ์ฌ์ฉ ์ง์: ์ฑ๋ฅ ์ ํ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด
StringBuilder
๋๋StringBuffer
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. - ๋ถํ์ํ ๊ฐ์ฒด ์์ฑ ๋ฐฉ์ง: ๋ฌธ์์ด ์ฐ๊ฒฐ ์์ ์ด ๋ง์ ๊ฒฝ์ฐ, ๋ถํ์ํ ๊ฐ์ฒด ์์ฑ์ ์ต์ํํ์ธ์.
- ๋ณ๋ ฌ ์ฒ๋ฆฌ ์ ๋๊ธฐํ ๊ณ ๋ ค: ๋ค์ค ์ค๋ ๋ ํ๊ฒฝ์์๋
StringBuffer
๋ฅผ ์ฌ์ฉํด ๋๊ธฐํ๋ฅผ ๋ณด์ฅํ์ธ์.
๊ฒฐ๋ก
Java์์ ๋ฌธ์์ด ์ฐ๊ฒฐ์ ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํํ ์ ์์ผ๋ฉฐ, ์์
์ ๋ณต์ก๋์ ์ฌ์ฉ ํ๊ฒฝ์ ๋ฐ๋ผ ์ ํฉํ ๋ฐฉ๋ฒ์ ์ ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๊ฐ๋จํ ์ฐ๊ฒฐ ์์
์๋ +
์ฐ์ฐ์๋ concat()
๋ฉ์๋๋ฅผ, ๋๊ท๋ชจ ๋ฌธ์์ด ์ฒ๋ฆฌ๋ ๋ฐ๋ณต์ ์ธ ์ฐ๊ฒฐ ์์
์๋ StringBuilder
๋๋ StringBuffer
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ํจ์จ์ ์
๋๋ค. ์ด๋ฒ ๊ธ์์ ์๊ฐํ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์ ์ ํ ๋ฐฉ๋ฒ์ ์ ํํด ํจ์จ์ ์ธ ๋ฌธ์์ด ์ฒ๋ฆฌ๋ฅผ ๊ตฌํํด ๋ณด์ธ์!
๋๊ธ ์ฐ๊ธฐ