kimgusxo 님의 블로그
문자열(String) 본문
1. 문자열(String)이란?
- 자바에서 문자열은 String 클래스로 표현되며, 불변(immutable) 특성을 갖고 있다. 즉 한 번 생성된 문자열은 변경할 수 없고 수정이 필요할 때마다 새로운 문자열 객체가 생성된다.
- 이러한 특성 때문에 메모리 관리와 쓰레드 안정성 측면에서는 장점으로 작용하지만 변경이 잦을경우 StringBuffer나 StringBuilder를 사용하자!
2. 주요 메소드
- length(): 문자열의 길이를 반환한다.
String str = "Hello";
System.out.println(str.length()); // 출력: 5
- charAt(int index): 해당 인덱스의 문자를 반환한다.
String str = "Hello";
System.out.println(str.charAt(1)); // 출력: 'e'
- substring(int beginIndex, int endIndex): 지정된 범위의 부분 문자열을 추출한다.
String str = "Hello";
System.out.println(str.substring(1, 4)); // 출력: "ell"
- indexOf(String str): 특정 문자열이 처음 등장하는 인덱스를 반환하며 없으면 -1을 반환한다.
String str = "Hello";
System.out.println(str.indexOf("lo")); // 출력: 3
- split(String regex): 정규 표현식을 기준으로 문자열을 분리하여 배열로 반환한다.
String data = "Java,Python,C++";
String[] languages = data.split(","); // 결과: ["Java", "Python", "C++"]
3. 기본 문자열 알고리즘
3-1. 팰린드롬(Palindrome) 검사
- 팰린드롬은 앞에서 읽으나 뒤에서 읽으나 똑같은 문자열을 의미한다.
public static boolean isPalindrome(String str) {
int left = 0;
int right = str.length() - 1;
while (left < right) {
if (str.charAt(left) != str.charAt(right)) {
return false;
}
left++;
right--;
}
return true;
}
System.out.println(isPalindrome("radar")); // 출력: true
System.out.println(isPalindrome("hello")); // 출력: false
3-2. 애너그램(Anagram) 검사
- 애너그램은 두 문자열이 동일한 문자 구성을 가지는지 검사하는 것이다.
public static boolean isAnagram(String s1, String s2) {
if (s1.length() != s2.length()) return false;
char[] c1 = s1.toCharArray();
char[] c2 = s2.toCharArray();
Arrays.sort(c1);
Arrays.sort(c2);
return Arrays.equals(c1, c2);
}
System.out.println(isAnagram("listen", "silent")); // 출력: true
System.out.println(isAnagram("hello", "world")); // 출력: false