๐ฉทJava์ String์ด๋?
Java์์์ String์ ๋ฌธ์์ด์ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ ํด๋์ค์ ๋๋ค.
๋ฌธ์์ด์ ๋ฌธ์๋ค์ ๋ชจ์์ผ๋ก, ๋ ๊ธ์ ์ด์์ ๋ฌธ์๋ฅผ ํํํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
๐
๐ก String์ ๋ฐ์ดํฐ ํ์ ์ด ์๋ ํด๋์ค์ด๋ค.
String์ 'int' ๋ 'double' ์ฒ๋ผ ๋ฐ์ดํฐ ํ์ ์ด ์๋ Java์์ ์ ๊ณตํ๋ ๋ด์ฅ ํด๋์ค๋ผ๋ ์ ์ ๊ผญ ์์งํด์ฃผ์ ์ผ ํฉ๋๋ค.
String ํด๋์ค๋ก ๋ฌธ์์ด์ ์ ์ฅํ๋ฉด, String ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ฉฐ ์ด๋ ์ฐธ์กฐ ํ์ ์ ์ํฉ๋๋ค.
๋ฐ์ดํฐํ์ ๊ณผ ๊ฐ์ฒด์ ์ฐจ์ด์ ๋ํด ์ค๋ช ๋๋ฆฌ๊ฒ ์ต๋๋ค.
ํญ๋ชฉ | ์ค๋ช |
ํ๋ฆฌ๋ฏธํฐ๋ธ ํ์ (๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ ) |
ํ๋ฆฌ๋ฏธํฐ๋ธ ํ์ ์ ์ ์ํ(int, long, short, byte), ์ค์ํ(float, double), ๋ฌธ์ํ(char), ๊ทธ๋ฆฌ๊ณ ๋ถ๋ฆฐํ(boolean)์ ํฌํจํฉ๋๋ค. ์ด๋ค ํ์ ์ ๋ณ์๋ ์ง์ ์ ์ผ๋ก ํด๋น ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํฉ๋๋ค. ์ด ๊ฐ๋ค์ ์ฃผ๋ก ์คํ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ฉ๋๋ค. ์คํ ๋ฉ๋ชจ๋ฆฌ๋ ๋ณ์์ ์๋ช ์ฃผ๊ธฐ๊ฐ ์งง์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ณณ์ผ๋ก, ํจ์ ํธ์ถ๊ณผ ํจ๊ป ํ ๋น๋๋ฉฐ ํจ์๊ฐ ์ข ๋ฃ๋๋ฉด ํด์ ๋ฉ๋๋ค. |
์ฐธ์กฐ ํ์
(๊ฐ์ฒด) |
์ฐธ์กฐ ํ์ ์ ๋ฐฐ์ด, ํด๋์ค, ์ธํฐํ์ด์ค ๋ฑ์ด ํฌํจ๋๋ฉฐ, ๋ณ์๋ ์ค์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฐธ์กฐ๋ฅผ ์ ์ฅํฉ๋๋ค. ๊ฐ์ฒด์ ์ค์ ๋ฐ์ดํฐ๋ ํ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ฉฐ, ๊ฐ์ฒด์ ์ ๊ทผํ๋ ค๋ฉด ์ฐธ์กฐ๋ฅผ ํตํด ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐํด์ผ ํฉ๋๋ค. ํ ๋ฉ๋ชจ๋ฆฌ๋ ํ๋ก๊ทธ๋จ์ ๋ ํฌ๊ณ ๋ณต์กํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋๋ฐ ์ฌ์ฉ๋๋ฉฐ, ๊ฐ์ฒด์ ์๋ช ์ฃผ๊ธฐ๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ์ ์ํด ๊ด๋ฆฌ๋ฉ๋๋ค. |
๊ฐ๋น์ง ์ปฌ๋ ํฐ๋? ํ๋ก๊ทธ๋จ์์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋์ผ๋ก ๊ฒ์ํ๊ณ ํ์ํ๋ ์์คํ ์ ๋๋ค.
๐ String์ ์ฃผ์ ํน์ง
1. ๋ถ๋ณ์ฑ (Immutability) : Java์ 'String' ๊ฐ์ฒด๋ ์์ฑ๋ ํ ๊ทธ ๋ด์ฉ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. 'String'์ ์ด๋ ํ ์ฐ์ฐ์ ํ๋๋ผ๋ , ์๋ณธ 'String'์ ๋ณํ์ง ์๊ณ ์๋ก์ด 'String' ๊ฐ์ฒด๊ฐ ์์ฑ๋ฉ๋๋ค. ์ด๋ ์ผ๋ฐ์ ์ธ ๋ฐ์ดํฐํ์ ์ผ๋ก ์ ์ธ๋๋ ๋ณ์์ ๋ค๋ฅธ ๊ฐ๋ ์ ๋๋ค.
2. ํ (Pool) : Java๋ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ์ ๋์ด๊ธฐ ์ํด 'String'ํ์ ์ฌ์ฉํฉ๋๋ค. ๋ฆฌํฐ๋ด ๋ฐฉ์์ผ๋ก ์์ฑ๋ ๋ชจ๋ 'String' ๊ฐ์ฒด๋ ํ์ ์ ์ฅ๋๊ณ , ๊ฐ์ ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ ํ์์ ๋์ผํ ๊ฐ์ฒด๋ฅผ ์ฌ์ฌ์ฉํฉ๋๋ค. ์ด๋ 'new' ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ช ์์ ์ผ๋ก ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์๋ ํ , ๋์ผํ ๋ฌธ์์ด์ ๋ํ ๋ถํ์ํ ๊ฐ์ฒด ์์ฑ์ ๋ฐฉ์งํฉ๋๋ค.
3. ๋ฉ์๋ : 'String' ํด๋์ค๋ ๋ฌธ์์ด์ ์กฐ์ํ๋ ๋ค์ํ ๋ฉ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค์ด 'length()', 'substring()', 'indexOf()', 'charAt()', 'toLowerCase()', 'toUpperCase()', 'trim()' , 'replace()' ๋ฑ์ด ์์ต๋๋ค.
4. ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ : Java์์๋ '+' ์ฐ์ฐ์๋ฅผ ๋ฌธ์์ด์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ๋ฌธ์์ด์ ์ฐ๊ฒฐํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ, ๋ด๋ถ์ ์ผ๋ก๋ 'StringBuilder'๋ฅผ ํตํด ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
์์ ๋ด์ฉ์ด ์๋ฟ์ง ์์ผ์ค ๊ฒ ๊ฐ์, ์ค์ต์ ํตํด์ ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค.
String str1 = "rabbit";
String str2 = "rabbit";
if(str1 == str2) { // ์ด '=='์ ๊ฐ์ฒด๊ฐ ๊ฐ๋ฆฌํค๋ ์ฃผ์๊ฐ์ ๋น๊ตํฉ๋๋ค.
System.out.println("๋๊ฐ์ ๋ฌธ์์ด์ด๋ผ ์ฃผ์๊ฐ ๋๊ฐ์์. ํ ๊ฐ๋
์
๋๋ค. \n");
}
str2 = "Luvbit";
if(str1 == str2) { // ์กฐ๊ฑด์ false
System.out.println("String์ ๋ถ๋ณ์
๋๋ค.");
} else {
System.out.println("๋ฌธ์์ด์ด ๋ฐ๋๋๊ฒ์๋ ์ฃผ์๊ฐ์ด ๋ฐ๋๋๋ค.");
}
print >>
๋๊ฐ์ ๋ฌธ์์ด์ด๋ผ ์ฃผ์๊ฐ ๋๊ฐ์์. ํ ๊ฐ๋
์
๋๋ค.
๋ฌธ์์ด์ด ๋ฐ๋๋๊ฒ์๋ ์ฃผ์๊ฐ์ด ๋ฐ๋๋๋ค.
- ์ฒซ ๋ฒ์งธ if๋ฌธ์ [ ๊ฐ์ ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ ํ์์ ๋์ผํ ๊ฐ์ฒด๋ฅผ ์ฌ์ฌ์ฉํฉ๋๋ค ]๋ฅผ ์ค๋ช ํฉ๋๋ค.
- ๋ ๋ฒ์งธ if๋ฌธ์ [ Java์ 'String' ๊ฐ์ฒด๋ ์์ฑ๋ ํ ๊ทธ ๋ด์ฉ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค ]๋ฅผ ์ค๋ช ํฉ๋๋ค.
String str1 = new String("Rabbit");
String str2 = new String("Rabbit");
//๋ฌธ์์ด์ด ๊ฐ์ง๋ง newํค์๋๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ก์ด ์ฃผ์๊ฐ์ ์์ฑํ๋ค๋ ์๋ฏธ์ด๊ธฐ์,
//str1 ๊ณผ str2์ ์ฃผ์๊ฐ์ ๋ค๋ฅด๋ค๊ณ ๋์ต๋๋ค.
if(str1 == str2) {
System.out.println("์ฃผ์๊ฐ์ด ๊ฐ์์");
} else {
System.out.println("์ฃผ์๊ฐ์ด ๋ฌ๋ผ์");
}
//equals ํจ์๋ ์ฃผ์๊ฐ์ด ์๋ ๋ฌธ์์ด์ ๋น๊ตํฉ๋๋ค.
//๋ฌธ์์ด์ ๋น๊ตํ ๋๋ ==์ด ์๋ equals๋ฅผ ์ฌ์ฉํด์ผํฉ๋๋ค.
if(str1.equals(str2)) {
System.out.println("๋ฌธ์์ด ๊ฐ์ ๊ฐ์์");
} else {
System.out.println("๋ฌธ์์ด ๊ฐ์ ๋ฌ๋ผ์");
}
print >>
์ฃผ์๊ฐ์ด ๋ฌ๋ผ์
๋ฌธ์์ด ๊ฐ์ ๊ฐ์์
- ์ ์ฝ๋๋ฅผ ํตํด new ํค์๋์ equals์ ๋ํด ์ ์ ์์ต๋๋ค.
String str1 = new String("love IT, ");
String str2 = new String("Luvbit!");
// + ์ฐ์ฐ์๋ ๋ ์์ ํฉ์ ๊ตฌํ ๋ ์ฌ์ฉ๋์ง๋ง 1+2 = 3
// ๋ฌธ์์ด์์๋ ๋ ๋ฌธ์์ด์ ๊ฒฐํฉํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
System.out.println(str1 + str2);
print >>
love IT, Luvbit!
๋ค์ ํฌ์คํ ์์๋ ํ๋ก๊ทธ๋๋ฐ์์ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋๋
String ํจ์์ ๋ํด์ ์ค๋ช ๋๋ฆฌ๊ฒ ์ต๋๋ค!
๊ถ๊ธํ์ ์ ์ด ์์ผ์๋ฉด ์ธ์ ๋ ์ง ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์!
๐ฉต๐ฐ๐ฉต
'โJava' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java ์ดํดํ๊ธฐ] 10. Java๋ก ๊ณ์ฐ๊ธฐ ๋ง๋ค๊ธฐ (1) (2) | 2024.05.18 |
---|---|
[Java ์ดํดํ๊ธฐ] 9. ์๋ฐ์ String(๋ฌธ์์ด) ๊ธฐ์ด (2) (2) | 2024.05.12 |
[Java ์ดํดํ๊ธฐ] 7. ์๋ฐ์ ์ ์ด๋ฌธ (2) | 2024.05.11 |
[Java ์ดํดํ๊ธฐ] 6. ์๋ฐ์ ํจ์(๋ฉ์๋)๋? (2) (2) | 2024.05.04 |
[Java ์ดํดํ๊ธฐ] 5. ์๋ฐ์ ํจ์(๋ฉ์๋)๋? (1) (2) | 2024.05.04 |