Java 문자열 관련 정리
1. 선언
String s = "hello";
char[] arr = {'h', 'e', 'l', 'l', 'o'};
2. 자주 쓰는 메서드
String s = "hello world";
s.length() // 길이 → 11
s.charAt(0) // 특정 인덱스 문자 → 'h'
s.substring(0, 5) // 부분 문자열 → "hello"
s.contains("world") // 포함 여부 → true
s.equals("hello") // 문자열 비교 → false (== 쓰면 안됨!)
s.indexOf("world") // 위치 찾기 → 6
s.replace("l", "L") // 치환 → "heLLo worLd"
s.toUpperCase() // 대문자 → "HELLO WORLD"
s.toLowerCase() // 소문자 → "hello world"
s.trim() // 앞뒤 공백 제거 → "hello world"
s.split(" ") // 분리 → ["hello", "world"]
3. 타입 변환
// String → int
int n = Integer.parseInt("123");
// String → long
long n = Long.parseLong("123");
// String → double
double n = Double.parseDouble("3.14");
// int → String
String s = String.valueOf(123);
String s = Integer.toString(123);
// char → String
String s = String.valueOf('a');
// String → char[]
char[] arr = "hello".toCharArray();
// char[] → String
String s = new String(arr);
4. 문자열 합치기 (StringBuilder)
// 이렇게 하면 느림 (매번 새 객체 생성)
String s = "";
s += "a";
s += "b";
// 이렇게 해야 빠름
StringBuilder sb = new StringBuilder();
sb.append("a");
sb.append("b");
sb.append('\n'); // char도 가능
sb.append(123); // int도 가능
String result = sb.toString(); // 최종 String으로 변환
5. 문자(char) 관련
char c = 'A';
Character.isLetter(c) // 문자인지 → true
Character.isDigit(c) // 숫자인지 → false
Character.isUpperCase(c) // 대문자인지 → true
Character.isLowerCase(c) // 소문자인지 → false
Character.toUpperCase(c) // 대문자로 → 'A'
Character.toLowerCase(c) // 소문자로 → 'a'
// 알파벳 순서 계산
int order = c - 'A'; // 'A'=0, 'B'=1, 'C'=2 ...
int order = c - 'a'; // 'a'=0, 'b'=1, 'c'=2 ...
int order = c - '0'; // '0'=0, '1'=1, '2'=2 ... (문자→숫자)
6. 백준에서 자주 쓰는 패턴
// 한 줄 통째로 읽기
String line = br.readLine();
// 공백으로 나눠서 읽기
StringTokenizer st = new StringTokenizer(br.readLine());
String token = st.nextToken();
// 문자 하나씩 순회
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
}
// char 배열로 바꿔서 수정 후 다시 String으로
char[] arr = s.toCharArray();
arr[0] = 'X';
String result = new String(arr);