๋ณธ ํฌ์คํ ์์๋ JAVA ๊ฐ๋ฐ์๊ฐ ์์์ผํ๋ String ํด๋์ค์ ๋ํ ์ฃผ์ ๋ด์ฉ๋ค์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
๋ชฉ์ฐจ
- ๋ฌธ์์ด ๋ถ์ด๊ธฐ - concat() VS '+' ์ฐ์ฐ์
- ๋ถ๋ณ(immutable)
- ๋ฌธ์์ด ๋น๊ต - == VS equals()
- String ๊ฐ์ฒด ์์ฑ - ๋ฆฌํฐ๋ด VS new ์ฐ์ฐ์
๋ฌธ์์ด ๋ถ์ด๊ธฐ - concat() VS '+' ์ฐ์ฐ์
concat() ๋ฉ์๋์ + ์ฐ์ฐ์๋ ๋ ๋ค ๋ ๊ฐ์ ๋ฌธ์์ด์ ์ด์ด๋ถ์ฌ ์๋ก์ด ๋ฌธ์์ด์ ๋ฐํํฉ๋๋ค. ํ์ง๋ง, ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์๋ ์ฐจ์ด์ ์ด ์์ต๋๋ค.
- concat() ๋ฉ์๋๋ ํธ์ถํ๋ ๋ฌธ์์ด ๋ค์ ์ ๋ฌ๋ ๋ฌธ์์ด์ ์ด์ด๋ถ์ ๋๋ค.
- + ์ฐ์ฐ์๋ ์ผ์ชฝ ๋ฌธ์์ด๊ณผ ์ค๋ฅธ์ชฝ ๋ฌธ์์ด์ ์ด์ด๋ถ์ ๋๋ค.
๋ค์์ ๊ฐ๋จํ ์์ ์ ๋๋ค.
String str1 = "Hello";
String str2 = "World";
String str3 = str1.concat(str2);
String str4 = str1 + str2;
System.out.println(str3); // ์ถ๋ ฅ: "HelloWorld"
System.out.println(str4); // ์ถ๋ ฅ: "HelloWorld"
์ ์์ ์์ str3์ str1๊ณผ str2๋ฅผ concat() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ด์ด๋ถ์ธ ๊ฒฐ๊ณผ์ด๋ฉฐ, str4๋ + ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์ด์ด๋ถ์ธ ๊ฒฐ๊ณผ์
๋๋ค. ๋ ๊ฐ์ง ๋ฐฉ๋ฒ ๋ชจ๋ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค.
๊ทธ๋ฌ๋ concat() ๋ฉ์๋๋ ๋ ๊ฐ์ ๋ฌธ์์ด์ ์ด์ด๋ถ์ผ ๋ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง๋ง, + ์ฐ์ฐ์๋ ๋ฌธ์์ด ์ฐ๊ฒฐ ์ ๋ด๋ถ์ ์ผ๋ก StringBuilder ๋๋ StringBuffer ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก์ด ๋ฌธ์์ด์ ์์ฑํ๊ฒ ๋ฉ๋๋ค. ๋ฐ๋ผ์, ๋ฌธ์์ด ์ฐ๊ฒฐ ์์
์ด ๋ง์์ง์๋ก + ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค concat() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ฑ๋ฅ์ ์ ๋ฆฌํฉ๋๋ค.
ํ์ง๋ง, ์๋ฐ 5๋ถํฐ๋ ์ปดํ์ผ๋ฌ๊ฐ ๋ฌธ์์ด ์ฐ๊ฒฐ ์์
์ ์๋์ผ๋ก StringBuilder ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋๋ก ์ต์ ํํ์ฌ, + ์ฐ์ฐ์์ concat() ๋ฉ์๋์ ์ฑ๋ฅ ์ฐจ์ด๊ฐ ํฌ๊ฒ ์ค์ด๋ค์์ต๋๋ค. ๋ฐ๋ผ์, ์ฑ๋ฅ ์ฐจ์ด๊ฐ ํฌ์ง ์๋ค๋ฉด ๋ ๊ฐ์ง ๋ฐฉ๋ฒ ์ค ํธํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
๋ถ๋ณ(immutable)
String ํด๋์ค๋ ๋ถ๋ณ(immutable) ํด๋์ค์ ๋๋ค. ์ด๋ String ๊ฐ์ฒด๋ฅผ ์์ฑํ ํ์๋ ๊ทธ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์์์ ์๋ฏธํฉ๋๋ค. ์ฆ, ํ ๋ฒ ์์ฑ๋ ๋ฌธ์์ด์ ์ ๋๋ก ์์ ํ ์ ์์ผ๋ฉฐ, ๋ฌธ์์ด์ ์๋์ ๊ฐ์ด concat() ๋ฉ์๋๋ก ๋ณ๊ฒฝํ๋ฉด ์๋ก์ด String ๊ฐ์ฒด๊ฐ ์์ฑ๋ฉ๋๋ค.
String str1 = "Hello";
String str2 = str1.concat(" World"); // ์๋ก์ด ๊ฐ์ฒด ์์ฑ
System.out.println(str1); // ์ถ๋ ฅ ๊ฒฐ๊ณผ : "Hello"
System.out.println(str2); // ์ถ๋ ฅ ๊ฒฐ๊ณผ : "Hello World"
์์ ์์ ์์ str1์ "Hello" ๋ฌธ์์ด์ ์ฐธ์กฐํ๋ String ๊ฐ์ฒด์ ๋๋ค. ์ดํ str1์ concat() ๋ฉ์๋๋ก " World"๋ฅผ ์ถ๊ฐํ๋ฉด ์๋ก์ด String ๊ฐ์ฒด๊ฐ ์์ฑ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ str1์ ๊ฐ์ ์ฌ์ ํ "Hello"์ธ ์ฑ๋ก ์ ์ง๋ฉ๋๋ค. ๋ฐ๋ผ์ str1์ ์ถ๋ ฅํ๋ฉด "Hello"๊ฐ, str2๋ "Hello World"๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
์ด๋ฒ์๋ ๋ค๋ฅธ ์์ ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
String str1 = "Hello";
String str2 = "Hello";
System.out.println(str1 == str2); // ์ถ๋ ฅ ๊ฒฐ๊ณผ : true
str1 += " World";
str2 += " World";
System.out.println(str1 == str2); // ์ถ๋ ฅ ๊ฒฐ๊ณผ : false
์์ ์์ ์์ str1๊ณผ str2๋ ๋ชจ๋ "Hello"๋ฅผ ์ฐธ์กฐํ๋ String ๊ฐ์ฒด์ ๋๋ค. ์ดํ str1๊ณผ str2์ ๊ฐ๊ฐ += ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ " World"๋ฅผ ์ถ๊ฐํ๋ฉด, str1๊ณผ str2๋ ๊ฐ๊ฐ "Hello World"๋ฅผ ์ฐธ์กฐํ๋ ์๋ก์ด String ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ String ํด๋์ค๋ immutable(๋ถ๋ณ)์ด๊ธฐ ๋๋ฌธ์, String ๊ฐ์ฒด๊ฐ ํ ๋ฒ ์์ฑ๋๋ฉด ๊ทธ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์, str1 += " World" ์ฝ๋๋ ์ค์ ๋ก๋ "Hello"์ " World"๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด ์๋๋ผ, "Hello"์ " World"๋ฅผ ํฉ์ณ ์๋ก์ด String ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , str1์ ์ด ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ฒ ๋ฉ๋๋ค. ๋ฐ๋ผ์, str1๊ณผ str2๊ฐ ์ฐธ์กฐํ๋ ๊ฐ์ฒด๋ ์๋ก ๋ค๋ฆ ๋๋ค. ๋ฐ๋ผ์ str1 == str2๋ฅผ ๋น๊ตํ๋ฉด false๊ฐ ๋ฐํ๋ฉ๋๋ค.
๋ถ๋ณ์ฑ์ Java์์ ๋งค์ฐ ์ค์ํ ๊ฐ๋ ์ค ํ๋์ด๋ฉฐ, ์ด๋ฅผ ์ ์ดํดํ๊ณ ํ์ฉํ๋ฉด ๋ณด๋ค ์์ ์ ์ด๊ณ ํจ์จ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ฌํ ํน์ฑ์ ๋ฉํฐ์ค๋ ๋ฉ ํ๊ฒฝ์์ ์์ ์ ์ธ ๋์์ ๋ณด์ฅํ๊ณ , ๋ฌธ์์ด ์ฐ์ฐ ์ ์์ ๋ฒํผ๋ฅผ ์์ฑํ๋ ์ค๋ฒํค๋๋ฅผ ์ค์ฌ์ค๋๋ค.
๋ฌธ์์ด ๋น๊ต - == VS equals()
๊ทธ๋ฌ๋ ์ ์์ ์ฝ๋์์ str1๊ณผ str2๋ฅผ equals() ๋ฉ์๋๋ก ๋น๊ตํ๋ค๋ฉด, "Hello World"๋ผ๋ ๊ฐ์ ๋ฌธ์์ด์ ๊ฐ๊ธฐ ๋๋ฌธ์ true๊ฐ ๋ฐํ๋ฉ๋๋ค. ์ด๋ String ํด๋์ค๊ฐ equals() ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํ์ฌ, ๋ String ๊ฐ์ฒด๊ฐ ๊ฐ๊ณ ์๋ ๋ฌธ์์ด์ด ๊ฐ์์ง๋ฅผ ๋น๊ตํ๋๋ก ๊ตฌํ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
System.out.println(str1.equals(str2)); // ์ถ๋ ฅ ๊ฒฐ๊ณผ : true
Java์์ == ์ฐ์ฐ์๋ ๋ ๊ฐ์ ๊ฐ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์์ ๋์ผํ ์์น์ ์๋์ง๋ฅผ ๋น๊ตํฉ๋๋ค. ์ฆ, ๋ ๊ฐ์ ๊ฐ์ฒด๊ฐ ๊ฐ์ ๊ฐ์ฒด์ธ์ง๋ฅผ ๋น๊ตํฉ๋๋ค. ๋ฐ๋ฉด equals() ๋ฉ์๋๋ ๋ ๊ฐ์ ๊ฐ์ฒด๊ฐ ๋์ผํ ๊ฐ์ ๊ฐ๋์ง๋ฅผ ๋น๊ตํฉ๋๋ค. ์ฆ, ๋ ๊ฐ์ ๊ฐ์ฒด๊ฐ ๊ฐ์ ๊ฐ์ฒด๋ ์๋์ง๋ง, ๊ฐ์ ๊ฐ์ ๊ฐ๋ ๊ฐ์ฒด์ธ์ง๋ฅผ ๋น๊ตํฉ๋๋ค. ๋ค์์ == ์ฐ์ฐ์์ equals() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ String ๊ฐ์ฒด๋ฅผ ๋น๊ตํ๋ ์์ ์ฝ๋์ ๋๋ค.
String str1 = "hello";
String str2 = "hello";
String str3 = new String("hello");
// == ์ฐ์ฐ์๋ก ๋น๊ต
System.out.println(str1 == str2); // true
System.out.println(str1 == str3); // false
// equals() ๋ฉ์๋๋ก ๋น๊ต
System.out.println(str1.equals(str2)); // true
System.out.println(str1.equals(str3)); // true
์ ์ฝ๋์์ str1๊ณผ str2๋ ๋ชจ๋ "hello"๋ฅผ ์ฐธ์กฐํ๋ ๋์ผํ String ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ฏ๋ก, == ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ๋น๊ตํ๋ฉด true๊ฐ ๋ฐํ๋ฉ๋๋ค. ๋ฐ๋ฉด str1๊ณผ str3์ ์๋ก ๋ค๋ฅธ String ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฏ๋ก == ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ๋น๊ตํ๋ฉด false๊ฐ ๋ฐํ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ equals() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋น๊ตํ๋ฉด, str1๊ณผ str2, ๊ทธ๋ฆฌ๊ณ str1๊ณผ str3๋ ๋ชจ๋ ๋์ผํ ๊ฐ์ ๊ฐ๊ธฐ ๋๋ฌธ์ true๊ฐ ๋ฐํ๋ฉ๋๋ค.
String ๊ฐ์ฒด ์์ฑ - ๋ฆฌํฐ๋ด VS new ์ฐ์ฐ์
Java์์ String ๊ฐ์ฒด๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค. ๋ฆฌํฐ๋ด(Literal)๋ก ์์ฑํ๋ ๋ฐฉ๋ฒ๊ณผ new ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑํ๋ ๋ฐฉ๋ฒ์
๋๋ค. ์ด ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ฐจ์ด์ ์ ๊ฐ์ฒด์ ์์ฑ๊ณผ ๊ด๋ฆฌ ๋ฐฉ์์ ์์ต๋๋ค.
๋ฆฌํฐ๋ด๋ก ๋ฌธ์์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด, JVM ๋ด๋ถ์ ์ผ๋ก ๋ฌธ์์ด ๋ฆฌํฐ๋ด ํ(String Literal Pool)์ ๋ฌธ์์ด์ ์ ์ฅํฉ๋๋ค. ์ด ๋, ๋ฆฌํฐ๋ด๋ก ์์ฑ๋ ๋ฌธ์์ด ๊ฐ์ฒด๋ JVM ๋ด๋ถ์์ ๊ด๋ฆฌ๋๋ฉฐ, ๋์ผํ ๋ฆฌํฐ๋ด์ ๊ฐ์ง ๋ฌธ์์ด ๊ฐ์ฒด๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ ๊ฒฝ์ฐ, ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์๊ณ ๊ธฐ์กด์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํฉ๋๋ค.
new ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด, ํญ์ ์๋ก์ด ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ฉฐ, ์ด ๊ฐ์ฒด๋ JVM์ ์ผ๋ฐ์ ์ธ ํ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ฉ๋๋ค. ์ฆ ๋ฆฌํฐ๋ด๋ก ์์ฑ๋ ๊ฐ์ฒด์๋ ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์กด์ฌํ๊ฒ ๋ฉ๋๋ค.
๐ JVM์ String literal pool๊ณผ ํ ๋ฉ๋ชจ๋ฆฌ
JVM์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํฌ๊ฒ ๋ ๊ฐ์ง ์์ญ์ผ๋ก ๊ตฌ๋ถํฉ๋๋ค. ์คํ(Stack)๊ณผ ํ(Heap) ์์ญ์ ๋๋ค. ์คํ์ ๋ฉ์๋๊ฐ ํธ์ถ๋ ๋๋ง๋ค ํ ๋น๋๋ ์ง์ญ ๋ณ์๋ฅผ ์ ์ฅํ๋ ์์ญ์ ๋๋ค. ํ์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋ ์์ญ์ผ๋ก, ๊ฐ์ฒด ์์ฑ ์์ ๋์ ์ผ๋ก ํ ๋น๋ฉ๋๋ค. String ํด๋์ค์ ๊ฒฝ์ฐ, ๋ฆฌํฐ๋ด๋ก ์์ฑ๋ ๋ฌธ์์ด์ String Literal Pool์ ์ ์ฅ๋ฉ๋๋ค. String Literal Pool์ JVM์ ํ ์์ญ์์ ๋ณ๋๋ก ๊ด๋ฆฌ๋๋ฉฐ, ๊ฐ์ ๋ด์ฉ์ ๋ฌธ์์ด์ด ์๋ค๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํ์ฌ ์ฌ์ฉํฉ๋๋ค. ์ด๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ค์ด๋ ์ฅ์ ์ด ์์ต๋๋ค.
๋ค์์ ๋ฆฌํฐ๋ด๊ณผ new ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์์ ์ฝ๋์
๋๋ค.
String str1 = "hello"; // ๋ฆฌํฐ๋ด๋ก ์์ฑ
String str2 = new String("hello"); // new ์ฐ์ฐ์๋ก ์์ฑ
System.out.println(str1 == str2); // false
System.out.println(str1.equals(str2)); // true
์ ์ฝ๋์์ str1๊ณผ str2๋ ๋ชจ๋ "hello"๋ฅผ ๊ฐ๋ String ๊ฐ์ฒด์
๋๋ค. == ์ฐ์ฐ์๋ก ๋น๊ตํ๋ฉด, str1๊ณผ str2๋ ์๋ก ๋ค๋ฅธ ๊ฐ์ฒด์ด๋ฏ๋ก false๊ฐ ๋ฐํ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ equals() ๋ฉ์๋๋ก ๋น๊ตํ๋ฉด, str1๊ณผ str2๋ ๋์ผํ ๊ฐ์ ๊ฐ๋ ๊ฐ์ฒด์ด๋ฏ๋ก true๊ฐ ๋ฐํ๋ฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ฆฌํฐ๋ด์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ฑ๋ฅ์ ์ด์ ์ด ์์ผ๋ฏ๋ก, ๊ฐ๋ฅํ ๊ฒฝ์ฐ ๋ฆฌํฐ๋ด๋ก ๋ฌธ์์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ฌธ์์ด์ ๋์ ์ผ๋ก ์์ฑํด์ผํ๋ ๊ฒฝ์ฐ์๋ new ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ฑ๋ฅ ๊ด๋ จ ์ถ๊ฐ ์ค๋ช ๐
๋ฆฌํฐ๋ด๋ก ๋ฌธ์์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์ฑ๋ฅ์ ์ด์ ์ด ์๋ ์ด์ ๋ ๋ฌธ์์ด ๋ฆฌํฐ๋ด ํ(String Literal Pool)์ด๋ผ๋ JVM์ ํน๋ณํ ์์ญ ๋๋ฌธ์
๋๋ค.
๋ฆฌํฐ๋ด๋ก ๋ฌธ์์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด, JVM์ ์ด ๋ฌธ์์ด ๊ฐ์ฒด๋ฅผ ๋ฆฌํฐ๋ด ํ์ ์ ์ฅํฉ๋๋ค. ๋ง์ฝ ๊ฐ์ ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ ๊ฐ์ง ๋ฌธ์์ด ๊ฐ์ฒด๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ค๋ฉด, JVM์ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์๊ณ , ์ด์ ์ ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํฉ๋๋ค. ์ด๋ ๊ฒ ๋ฌธ์์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด, JVM์ ๋ถํ์ํ ๊ฐ์ฒด ์์ฑ์ ํผํ ์ ์์ด์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ค์ผ ์ ์์ต๋๋ค.
๋ฐ๋ฉด์ new ์ฐ์ฐ์๋ก ๋ฌธ์์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ, ํญ์ ์๋ก์ด ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ฏ๋ก ์ด์ ์ ์์ฑ๋ ๊ฐ์ฒด์ ๊ฐ์ ๋ด์ฉ์ ๊ฐ์ง ๋ฌธ์์ด ๊ฐ์ฒด๊ฐ ์ฌ๋ฌ ๊ฐ ์กด์ฌํ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋์ด๋๊ณ , ๊ฐ๋น์ง ์ปฌ๋ ์
(Garbage Collection)์ด ์์ฃผ ๋ฐ์ํ๊ฒ ๋์ด ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
๋ํ ๋ฆฌํฐ๋ด๋ก ์์ฑ๋ ๋ฌธ์์ด ๊ฐ์ฒด๋ ์ปดํ์ผ ์์ ์ ์์ฑ๋๋ฏ๋ก, ๋ฐํ์ ์ ๋ฌธ์์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ฒ๋ณด๋ค ๋ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌ๋ฉ๋๋ค. ๋ฐ๋ผ์ ๊ฐ๋ฅํ ๊ฒฝ์ฐ์๋ ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ฑ๋ฅ์ ์ด์ ์ด ์์ต๋๋ค.
๋ฌธ์์ด์ ๋์ ์์ฑ ์ถ๊ฐ ์ค๋ช ๐
๋ฌธ์์ด์ ๋์ ์ผ๋ก ์์ฑํด์ผ ํ๋ ๊ฒฝ์ฐ๋ ๋ณดํต ๋ค์๊ณผ ๊ฐ์ ์ํฉ์์ ๋ฐ์ํฉ๋๋ค.
- ์ฌ์ฉ์ ์ ๋ ฅ ์ฒ๋ฆฌ: ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๊ฐ์ ๋ฌธ์์ด๋ก ๋ฐ์๋ค์ฌ์ผ ํ๋ ๊ฒฝ์ฐ, ์ ๋ ฅ๊ฐ์ ๋ฐ๋ผ ๋์ ์ผ๋ก ๋ฌธ์์ด์ ์์ฑํด์ผ ํฉ๋๋ค.
- ํ์ผ ์ฒ๋ฆฌ: ํ์ผ์์ ์ฝ์ด๋ค์ธ ๋ฐ์ดํฐ๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ์ฌ ์ฒ๋ฆฌํด์ผ ํ๋ ๊ฒฝ์ฐ, ํ์ผ ํฌ๊ธฐ๊ฐ ๋งค์ฐ ํฌ๊ฑฐ๋ ํ์ผ ๋ด์ฉ์ด ๋์ ์ผ๋ก ๋ณ๊ฒฝ๋ ์ ์๋ ๊ฒฝ์ฐ์๋ ๋ฌธ์์ด์ ๋์ ์ผ๋ก ์์ฑํด์ผ ํฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฒ๋ฆฌ: ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์กฐํํ ๊ฒฐ๊ณผ๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ์ฌ ์ฒ๋ฆฌํด์ผ ํ๋ ๊ฒฝ์ฐ, ์กฐํ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ๋์ ์ผ๋ก ๋ฌธ์์ด์ ์์ฑํด์ผ ํฉ๋๋ค.
- ์น ์ ํ๋ฆฌ์ผ์ด์ ์ฒ๋ฆฌ: ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ์์๊ฒ ๋์ ์ผ๋ก ์์ฑ๋ HTML, CSS, JavaScript ์ฝ๋๋ฅผ ๋ณด์ฌ์ค์ผ ํ๋ ๊ฒฝ์ฐ, ์ด ์ฝ๋๋ฅผ ๋ฌธ์์ด๋ก ์์ฑํด์ผ ํฉ๋๋ค.
- ๋ก๊ทธ ์ฒ๋ฆฌ: ๋ก๊ทธ ํ์ผ์ ์ ์ฅํ ๋ฉ์์ง๋ฅผ ๋ฌธ์์ด๋ก ์์ฑํ์ฌ ์ ์ฅํด์ผ ํ๋ ๊ฒฝ์ฐ, ๋ก๊ทธ ๋ฉ์์ง์ ๋ฐ๋ผ ๋์ ์ผ๋ก ๋ฌธ์์ด์ ์์ฑํด์ผ ํฉ๋๋ค.
์ด ์ธ์๋ ๋ฌธ์์ด์ ๋์ ์ผ๋ก ์์ฑํด์ผ ํ๋ ๋ค์ํ ์ํฉ์ด ์์ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ์๋ StringBuilder๋ StringBuffer ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด์ ๋์ ์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค. ์ด ํด๋์ค์ ๋ํด์๋ ๋ค์ ํฌ์คํ ์์ ์์ธํ ๋ค๋ฃจ๊ฒ ์ต๋๋ค.
๊ทธ๋ผ ๋ชจ๋๋ค ์ด๊ณตํด์!
'Javaยท๏ปฟServletยท๏ปฟJSP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JAVA ๊ฐ๋ฐ์๊ฐ ์์์ผํ String ํด๋์ค - 2ํธ (0) | 2023.02.18 |
---|---|
[JAVA] Class ํด๋์ค๋ฅผ ์ด์ฉํด ๋ฉ์๋์ ์์ฑ์ ์ป๊ธฐ (0) | 2023.02.12 |
[JAVA] Arrays.asList()์ List.of()์ ์ฐจ์ด (0) | 2023.02.10 |
JAVA์์ String์ Null Safeํ๊ฒ ๋น๊ตํ๊ธฐ (0) | 2021.08.14 |
JAVA ์ ๋ค๋ฆญ(Generics) ํด๋์ค์ ๋ฉ์๋ (1) | 2020.07.11 |
๋๊ธ