nextInt()처럼 숫자로 바로 바꿔주는 기능이 있음throws IOException)가 필요하고, 무조건 문자열(String)로만 읽어와서 숫자로 바꾸는 과정이 따로 필요무조건 외워야 할 코드 패턴:
// 1. 선언
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 2. 한 줄 읽기
String s = br.readLine();
// 3. 숫자로 바꾸기 (String -> int)
int n = Integer.parseInt(s);
BufferedReader로 한 줄을 통째로 읽어왔다면(예: "10 20 30"), 이제 이걸 조각내기!
split()String[] arr = s.split(" ");StringTokenizersplit보다 빨라서 코테에서는 이걸 더 많이 씀!StringTokenizer st = new StringTokenizer(br.readLine()); // "10 20" 읽기
int a = Integer.parseInt(st.nextToken()); // "10" 꺼내기
int b = Integer.parseInt(st.nextToken()); // "20" 꺼내기
문자열의 특정 부분만 쏙 빼오고 싶을 때 사용
s.substring(시작인덱스, 끝인덱스)String s = "HelloJava";
System.out.println(s.substring(0, 5)); // "Hello" (인덱스 0,1,2,3,4 까지)
System.out.println(s.substring(5)); // "Java" (5부터 끝까지)
String s = s + "안녕"을 쓰면 안 되나요?자바에서 String은 한 번 만들면 수정이 불가함. +를 할 때마다 컴퓨터는 새로운 문자열 객체를 계속 만들어서 1만번을 더하면 1만 개의 객체가 생겨서 메모리가 터지거나 속도가 엄청나게 느려짐
StringBuilder수정 가능한 문자열 통으로 내용을 아무리 추가해도(append) 객체를 새로 만들지 않고 하나의 통 안에 계속 쌓음
실전 예제
StringBuilder sb = new StringBuilder();
for(int i=0; i<100; i++) {
sb.append(i).append("\n"); // 통에 계속 담기
}
System.out.print(sb); // 마지막에 한 번만 출력 (시간 단축 핵심!)
| 기능 | 도구 | 용도 | 핵심 포인트 |
|---|---|---|---|
| 입력 | BufferedReader | 빠른 입력 | Integer.parseInt()와 세트 |
| 자르기 | StringTokenizer | 공백 기준 분리 | nextToken()으로 하나씩 호출 |
| 부분 추출 | substring | 특정 구간 추출 | (시작, 끝)에서 끝은 포함 안 됨 |
| 합치기/출력 | StringBuilder | 빠른 출력 | append()로 모아서 한 번에 출력 |