โถ String์ ์ ์ธํ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ
String์ ์ฌ์ฉํ ๋ ๋ฌธ์์ด์ ์์ฑ์์ ๋งค๊ฐ๋ณ์๋ก ํ์ฌ ์์ฑํ๋ ๋ฐฉ์๊ณผ ์ด๋ฏธ ์์ฑ๋ ๋ฌธ์์ด ์์๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ฐฉ์์ด ์๋ค.
์ธ๋ป ๋น์ทํด ๋ณด์ด์ง๋ง, ๋ด๋ถ์ ์ผ๋ก ๋ ๊ฐ์ง ๋ฐฉ์์ ํฐ ์ฐจ์ด๊ฐ ์๋ค. new ์์ฝ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ๋ "abc" ๋ฌธ์์ด์ ์ํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ ๋น๋๊ณ ์๋ก์ด ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ค. ํ์ง๋ง str2="test"์ ๊ฐ์ด ์์ฑ์๋ฅผ ์ด์ฉํ์ง ์๊ณ ๋ฐ๋ก ๋ฌธ์์ด ์์๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฒฝ์ฐ์๋ str2๊ฐ ๊ธฐ์กด์ ๋ง๋ค์ ธ ์๋ "test"๋ผ๋ ๋ฌธ์์ด ์์์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋๋ค. ๋ฐ๋ผ์ String str3="test" ์ฝ๋๋ฅผ ์์ฑํ๋ฉด str2์ str3๋ ์ฃผ์ ๊ฐ์ด ๊ฐ๊ฒ ๋๋ค.
test๋ 10, 20 ๋ฑ๊ณผ ๊ฐ์ด ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉ๋๋ ์์ ๊ฐ์ ์ ์ฅํ๋ ๊ณต๊ฐ์ '์์ ํ' ์ด๋ผ ํ๋ค.
package string;
public class StringTest1 {
public static void main(String[] args) {
String str1 = new String("abc");
String str2 = new String("abc");
System.out.println(str1 == str2); // ์ธ์คํด์ค๊ฐ ๋งค๋ฒ ์๋ก ์์ฑ๋๋ฏ๋ก str1๊ณผ str2์ ์ฃผ์ ๊ฐ์ด ๋ค๋ฆ
System.out.println(str1.equals(str2)); // ๋ฌธ์์ด ๊ฐ์ ๊ฐ์ผ๋ฏ๋ก true ๋ฐํ
String str3 = "abc";
String str4 = "abc";
System.out.println(str3 == str4); // ๋ฌธ์์ด abc๋ ์์ ํ์ ์ ์ฅ๋์ด ์์ผ๋ฏ๋ก str3๊ณผ str4๊ฐ ๊ฐ๋ฆฌํค๋ ์ฃผ์ ๊ฐ์ด ๊ฐ์
System.out.println(str3.equals(str4)); // ๋ฌธ์์ด ๊ฐ๋ ๊ฐ์ผ๋ฏ๋ก true ๋ฐํ
}
}
<์คํ ๊ฒฐ๊ณผ>
โ
โ
โ
*String ํด๋์ค์ final char[ ] ๋ณ์
๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ๋ฌธ์์ด์ผ ๊ตฌํํ ๋ ์ผ๋ฐ์ ์ผ๋ก char[ ] ๋ฐฐ์ด์ ์ฌ์ฉํ๋ค. ์๋ฐ๋ String ํด๋์ค๋ฅผ ์ ๊ณตํด char[ ] ๋ฐฐ์ด์ ์ง์ ๊ตฌํํ์ง ์๊ณ ๋ ํธ๋ฆฌํ๊ฒ ๋ฌธ์์ด์ ์ฌ์ฉํ ์ ์๋ค.
String ํด๋์ค์ ๊ตฌํ ๋ด์ฉ์ ๋ณด๋ฉด private final char value[ ] ๋ผ๊ณ ์ ์ธ๋ charํ ๋ฐฐ์ด์ด ์๋ค. ํ๋ก๊ทธ๋จ์์ String s = new String("abc")๋ผ๊ณ ์ฐ๋ฉด abc๋ String ํด๋์ค์ value ๋ณ์์ ์ ์ฅ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ด ๋ณ์๋ final๋ก ์ ์ธ๋์ด ์๋ค. final์ ๋ฌธ์์ด์ ๋ณ๊ฒฝํ ์ ์๋ค๋ ๋ป์ด๋ค. ๋ฐ๋ผ์ ํ ๋ฒ ์์ฑ๋ ๋ฌธ์์ด์ ๋ณ๊ฒฝ๋์ง ์๋๋ค. ์ด๋ฐ ๋ฌธ์์ด์ ํน์ง์ '๋ฌธ์์ด์ ๋ถ๋ณํ๋ค'๋ผ๊ณ ํ๋ค.
๊ทธ๋ฌ๋ฉด ํ๋ก๊ทธ๋จ์์ ๋ ๊ฐ์ ๋ฌธ์์ด์ ์ฐ๊ฒฐํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น? ์ด๋ฌํ ๊ฒฝ์ฐ ๋ ์ค ํ๋์ ๋ฌธ์์ด์ด ๋ณ๊ฒฝ๋๋ ๊ฒ์ด ์๋๋ผ ๋ ๋ฌธ์์ด์ด ์ฐ๊ฒฐ๋ ์๋ก์ด ๋ฌธ์์ด์ด ์์ฑ๋๋ค.
package string;
public class StringTest2 {
public static void main(String[] args) {
String javaStr = new String("java");
String androidStr = new String("android");
System.out.println(javaStr);
System.out.println("์ฒ์ ๋ฌธ์์ด ์ฃผ์ ๊ฐ : " + System.identityHashCode(javaStr));
javaStr = javaStr.concat(androidStr); // ๋ฌธ์์ด javaStr์ ๋ฌธ์์ด androidStr๋ฅผ ์ฐ๊ฒฐํ์ฌ javaStr์ ๋์
System.out.println(javaStr);
System.out.println("์ฐ๊ฒฐ๋ ๋ฌธ์์ด ์ฃผ์ ๊ฐ : " + System.identityHashCode(javaStr));
}
}
-concat( ) : ๋ ๋ฌธ์์ด์ ์ฐ๊ฒฐํ๋ ๋ฉ์๋
concat ํจ์์ ๋ฐํํ์ด String์ด๋ฏ๋ก, String์ด ์๋กญ๊ฒ ๋ง๋ค์ด์ ธ์ ๋ฐํ๋จ.
์ฆ, "javaandroid" ๋ผ๋ ์๋ก์ด String์ด ๋ง๋ค์ด์ ธ์ ๋ฐํ๋จ !
โ
โ
<์คํ ๊ฒฐ๊ณผ>
-๋ฌธ์์ด์ ๋ถ๋ณํ๋ฏ๋ก javaStr ๋ณ์ ๊ฐ ์์ฒด๊ฐ ๋ณํ๋ ๊ฒ์ด ์๋๋ผ ์๋ก์ด ๋ฌธ์์ด์ด ์์ฑ๋ ๊ฒ์ด๋ค.
โ
โโ
โ
*StringBuffer์ StringBuilder ํด๋์ค ํ์ฉํ๊ธฐ
ํ๋ก๊ทธ๋จ์ ๋ง๋ค๋ค ๋ณด๋ฉด ๋ฌธ์์ด์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ฐ๊ฒฐํด์ผ ํ ๋๊ฐ ๋ง๋ค. ๊ทธ๋ฐ๋ฐ String ํด๋์ค๋ ํ๋ฒ ์์ฑ๋๋ฉด ๊ทธ ๋ด๋ถ์ ๋ฌธ์์ด์ด ๋ณ๊ฒฝ๋์ง ์๊ธฐ ๋๋ฌธ์ String ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด์ ๊ณ์ ์ฐ๊ฒฐํ๊ฑฐ๋ ๋ณ๊ฒฝํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ฉด ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ง์ด ๋ญ๋น๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ด ๋ฐ๋ก StringBuffer์ StringBuilder ํด๋์ค์ด๋ค.
package string;
public class StringBuilderTest {
public static void main(String[] args) {
String javaStr = new String("Java");
System.out.println("javaStr ๋ฌธ์์ด ์ฃผ์ : " + System.identityHashCode(javaStr)); // ์ธ์คํด์ค๊ฐ ์ฒ์ ์์ฑ๋์์๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์
StringBuilder buffer = new StringBuilder(javaStr); // String์ผ๋ก๋ถํฐ StringBuilder ์์ฑ
System.out.println("์ฐ์ฐ ์ buffer ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ : " + System.identityHashCode(buffer));
buffer.append(" and"); // ๋ฌธ์์ด ์ถ๊ฐ
buffer.append(" android");
buffer.append(" programming is fun!!!");
System.out.println("์ฐ์ฐ ํ buffer ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ : " + System.identityHashCode(buffer));
javaStr = buffer.toString(); // String ํด๋์ค๋ก ๋ฐํ
System.out.println(javaStr);
System.out.println("์ฐ๊ฒฐ๋ javaStr ๋ฌธ์์ด ์ฃผ์ : " + System.identityHashCode(javaStr));
}
}
<์คํ ๊ฒฐ๊ณผ>
'Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java-๊ธฐ์ด] Wrapper ํด๋์ค (0) | 2021.02.21 |
---|---|
[Java-๊ธฐ์ด] ๊ทธ ๋ฐ์ ๋ค๋ฅธ String ๊ด๋ จ ๋ฉ์๋ (0) | 2021.02.21 |
[Java-๊ธฐ์ด] Object ํด๋์ค (0) | 2021.02.21 |
[Java-๊ธฐ์ด] ์ธํฐํ์ด์ค ์์ (0) | 2021.02.21 |
[Java-๊ธฐ์ด] ์ธํฐํ์ด์ค ํ์ฉํ๊ธฐ (0) | 2021.02.21 |
๋๊ธ