
charAt์ ์๋ฐ์์ ๋ฌธ์์ด(String)์ ํน์ ์์น์ ์๋ ๋ฌธ์๋ฅผ ๊ฐ์ ธ์ฌ ๋ ์ฌ์ฉํ๋ ๋ฉ์๋์ด๋ค.
๋ฌธ์์ด์ ๋ฌธ์(char)์ ๋ฐฐ์ด๋ก ๊ฐ์ฃผ๋ ์ ์๊ธฐ ๋๋ฌธ์,
์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํด ๊ฐ๋ณ ๋ฌธ์์ ์ ๊ทผํ ์ ์๋ค.
1. charAt ๋ฉ์๋์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ
char charAt(int index)
๋งค๊ฐ๋ณ์:
• index: ๋ฌธ์์ด์์ ๊ฐ์ ธ์ค๊ณ ์ถ์ ๋ฌธ์์ ์์น๋ฅผ ๋ํ๋ด๋ 0๋ถํฐ ์์ํ๋ ์ ์์ด๋ค.
๋ฐํ๊ฐ:
• ์ง์ ๋ ์ธ๋ฑ์ค์ ์๋ ๋จ์ผ ๋ฌธ์(char).
์์ธ ์ฒ๋ฆฌ:
• StringIndexOutOfBoundsException: ์ฃผ์ด์ง index๊ฐ 0๋ณด๋ค ์๊ฑฐ๋, ๋ฌธ์์ด์ ๊ธธ์ด๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ๊ฒฝ์ฐ ๋ฐ์ํ๋ค.
2. ์ฌ์ฉ ์์
public class Main {
public static void main(String[] args) {
String str = "Hello, World!";
// ํน์ ์์น์ ๋ฌธ์ ๊ฐ์ ธ์ค๊ธฐ
char ch = str.charAt(0); // ์ธ๋ฑ์ค 0 -> 'H'
System.out.println(ch); // ์ถ๋ ฅ: H
char ch2 = str.charAt(7); // ์ธ๋ฑ์ค 7 -> 'W'
System.out.println(ch2); // ์ถ๋ ฅ: W
// ๋ฌธ์์ด ๋์ ๋ฌธ์ ๊ฐ์ ธ์ค๊ธฐ
char lastChar = str.charAt(str.length() - 1); // ๋ง์ง๋ง ๋ฌธ์ '!'
System.out.println(lastChar); // ์ถ๋ ฅ: !
}
}
3. charAt์ ํน์ง
• 0-based index: ์ธ๋ฑ์ค๋ 0๋ถํฐ ์์ํ๋ค.
- str.charAt(0)์ ์ฒซ ๋ฒ์งธ ๋ฌธ์๋ฅผ ๊ฐ์ ธ์จ๋ค.
- str.charAt(str.length() - 1)์ ๋ง์ง๋ง ๋ฌธ์๋ฅผ ๊ฐ์ ธ์จ๋ค.
• ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ์ด๊ณผํ๋ ์ธ๋ฑ์ค๋ฅผ ์ ๋ ฅํ๋ฉด StringIndexOutOfBoundsException์ด ๋ฐ์ํ๋ค.
String str = "Hello";
char ch = str.charAt(10); // ์์ธ ๋ฐ์: Index 10 out of bounds
4. ํ์ฉ ์์
(1) ๋ฌธ์์ด์์ ํน์ ๋ฌธ์ ์ฐพ๊ธฐ
๋ฌธ์์ด์ ํน์ ์์น์ ์๋ ๋ฌธ์๋ฅผ ํ์ธํ๊ฑฐ๋ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉํ๋ค.
public class Main {
public static void main(String[] args) {
String str = "apple";
// 'p' ๋ฌธ์์ ๊ฐ์ ์ฐพ๊ธฐ
int count = 0;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == 'p') {
count++;
}
}
System.out.println("Number of 'p': " + count); // ์ถ๋ ฅ: 2
}
}
(2) ๋ฌธ์์ด ๋ค์ง๊ธฐ
charAt์ ์ฌ์ฉํด ๋ฌธ์์ด์ ๋ค์ง์ ์ ์๋ค.
public class Main {
public static void main(String[] args) {
String str = "hello";
StringBuilder reversed = new StringBuilder();
for (int i = str.length() - 1; i >= 0; i--) {
reversed.append(str.charAt(i));
}
System.out.println(reversed); // ์ถ๋ ฅ: "olleh"
}
}
StringBuilder ๊ฐ์ฒด๋ฅผ ๋ณ๋๋ก ์์ฑํ ์ด์ ๋
๋ฌธ์์ด์ ๋ค์ง๋ ๊ณผ์ ์์ ๋ฌธ์๋ฅผ ์กฐ์ํ๊ณ ์๋ก์ด ๋ฌธ์์ด์ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉ๋์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฌธ์์ด(String)์ ๋ถ๋ณ(immutable) ๊ฐ์ฒด์ด๋ฏ๋ก, ์๋ก์ด ๋ฌธ์์ด์ ์์ฑํ๊ฑฐ๋ ์์ ํ๋ ค๋ฉด ์ถ๊ฐ์ ์ธ ๊ฐ์ฒด๊ฐ ํ์ํ๋ค.
1. String์ ๋ถ๋ณ ๊ฐ์ฒด (Immutable Object)
• ์๋ฐ์์ String ๊ฐ์ฒด๋ ๋ถ๋ณ(immutable)์ด๋ค.
• ๋ฌธ์์ด์ ๋ณ๊ฒฝํ๋ ค๋ ๋ชจ๋ ์์ ์ ์๋ก์ด String ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ฒ ๋๋ค.
• ์๋ฅผ ๋ค์ด, ๋ฌธ์์ด์ ๋ฌธ์๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ๋ณ๊ฒฝํ๋ ค๊ณ ํ๋ฉด ๊ธฐ์กด ๋ฌธ์์ด์ ์์ ํ๋ ๋์ , ์์ ๋ ๋ด์ฉ์ ๊ฐ์ง ์๋ก์ด ๋ฌธ์์ด ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค.
2. StringBuilder๋ ๊ฐ๋ณ ๊ฐ์ฒด (Mutable Object)
• StringBuilder๋ ๋ฌธ์์ด์ ์กฐ์ํ๊ธฐ ์ํด ์ค๊ณ๋ ๊ฐ๋ณ(mutable) ๊ฐ์ฒด์ด๋ค.
• ๊ธฐ์กด ๊ฐ์ฒด๋ฅผ ์์ ํ ์ ์์ผ๋ฏ๋ก, ๋ฐ๋ณต์ ์ผ๋ก ๋ฌธ์์ด์ ๋ณ๊ฒฝํ๋ ์์ ์ ๋งค์ฐ ํจ์จ์ ์ด๋ค.
• ๋ฌธ์์ด์ ์ถ๊ฐ, ์ญ์ , ์ฝ์ ํ๋ ์์ ์ด ๋ง์ ๊ฒฝ์ฐ StringBuilder๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ฑ๋ฅ ๋ฉด์์ ๋ ์ข๋ค.
3. ์ StringBuilder๋ฅผ ์ฌ์ฉํ๋๊ฐ?
- ์ฑ๋ฅ์ ์ธ ์ด์
• ๋ฌธ์์ด์ ๋ค์ง๋ ๊ณผ์ ์์๋ ๊ธฐ์กด ๋ฌธ์์ด์ ๋ฌธ์๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์ถ๊ฐํด์ผ ํ๋ค.
• ๋ง์ฝ String๋ง์ ์ฌ์ฉํ๋ค๋ฉด, ๋งค๋ฒ ์๋ก์ด String ๊ฐ์ฒด๊ฐ ์์ฑ๋์ด ๋ฉ๋ชจ๋ฆฌ์ CPU๋ฅผ ๋ ๋ง์ด ์๋ชจํ์ ๊ฒ์ด๋ค.
-------
์ ์ฝ๋์์ StringBuilder๋ฅผ ๋ณ๋๋ก ๋ง๋ ์ด์ ๋:
1. ๋ฌธ์๋ฅผ ๋ณํ(์กฐ์)ํด์ผ ํ๋ ์์ ์ ํจ์จ์ ์ผ๋ก ๋์ํ๊ธฐ ์ํด์.
2. String์ ๋ถ๋ณ์ฑ์ผ๋ก ์ธํด ์๋ก์ด ๊ฐ์ฒด๊ฐ ๊ณ์ ์์ฑ๋๋ ๋นํจ์จ์ ๋ฐฉ์งํ๊ธฐ ์ํด์.
3. ๋ฐ๋ณต์ ์ธ ๋ฌธ์์ด ์ถ๊ฐ ์์ ์์ ์ฑ๋ฅ์ ์ต์ ํํ๊ธฐ ์ํด์.
๋ฐ๋ผ์, ๋ฌธ์์ด ์กฐ์(ํนํ ์ถ๊ฐ, ์ญ์ , ์์ )์ด ํ์ํ๋ค๋ฉด StringBuilder๋ StringBuffer๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
(3) ๋ฌธ์์ด์ด ๋์นญ(ํ๋ฌธ)์ธ์ง ํ์ธ
๋ฌธ์์ด์ด ์๋ค๋ก ๊ฐ์์ง ํ์ธํ๋ ์์.
public class Main {
public static void main(String[] args) {
String str = "racecar";
boolean isPalindrome = true;
for (int i = 0; i < str.length() / 2; i++) {
if (str.charAt(i) != str.charAt(str.length() - 1 - i)) {
isPalindrome = false;
break;
}
}
System.out.println("Is palindrome: " + isPalindrome); // ์ถ๋ ฅ: true
}
}
5. ์ฃผ์์
• ์ธ๋ฑ์ค ์ด๊ณผ ๋ฐฉ์ง:
ํญ์ str.length()๋ฅผ ํ์ธํด ์ธ๋ฑ์ค๊ฐ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ์ด๊ณผํ์ง ์๋๋ก ์ฃผ์ํด์ผ ํ๋ค.
• ๋ฌธ์ ๋จ์์ ์์ :
charAt์ ๋จ์ผ ๋ฌธ์์ ๋ํ ์์ ์๋ง ์ฌ์ฉ๋๋ค.
์ฌ๋ฌ ๋ฌธ์๋ฅผ ๋น๊ตํ๊ฑฐ๋ ์กฐ์ํ๋ ค๋ฉด ๋ค๋ฅธ ๋ฉ์๋(substring, replace ๋ฑ)๋ฅผ ์ฌ์ฉํ๋ค.
6. ์์ฝ
• charAt: ๋ฌธ์์ด์ ํน์ ์ธ๋ฑ์ค์ ์๋ ๋จ์ผ ๋ฌธ์๋ฅผ ๊ฐ์ ธ์จ๋ค.
• ์ฌ์ฉ๋ฒ: str.charAt(index) (0-based ์ธ๋ฑ์ค).
• ํ์ฉ:
- ํน์ ์์น์ ๋ฌธ์ ํ์ธ
- ๋ฌธ์์ด์ ์ํํ๋ฉฐ ๋ฌธ์ ๋จ์ ์์ ์ํ
- ๋ฌธ์์ด ๋ค์ง๊ธฐ, ๋ฌธ์ ๊ฐ์ ์ธ๊ธฐ ๋ฑ
์์ธ ์ฒ๋ฆฌ: ์ ํจํ์ง ์์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ง ์๋๋ก ์ฃผ์ํ๊ธฐ!