BufferedReader 사용법
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
StringTokenizer st = new StringTokenizer(str);
특징
BufferedReader란?
데이터를 한 번에 읽어와 버퍼에 보관한 후 버퍼에서 데이터를 읽어오는 방식으로 동작하는 클래스. 즉, 사용자가 입력한 문자 스트림은 읽는 것(read)이다.
InputStreamReader란?
문자 기반의 보조 스트림으로써 바이트 기반 스트림을 문자 기반 스트림으로 연결시켜 주는 역할을 한다
System.in이란?
사용자로부터 입력을 받기 위한 입력 스트림. Scanner 클래스뿐만 아니라 다른 입력 클래스들도 System.in을 통해 사용자 입력을 받아야 한다
StringTokenizer란?
문자열을 지정한 구분자로 쪼개주는 클래스. 쪼개어진 문자열을 ‘토큰(Token)’이라고 한다.
1. 타입(Type)
2. 메모리 용량
3. Thread-safe
4. 실행 속도
1. String ⇒ Number
int n = Integer.parseInt(st.nextToken());
float n = Float.parseFloat(st.nextToken());
double n = Double.parseDouble(st.nextToken());
2. String ⇒ char
charAt(i) : 문자열의 i번째 char를 반환하는 메서드
String str = st.nextToken(); // "Hello"
for(int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
System.out.println(ch);
}
toCharArray() : 문자열을 char 배열로 변환
String str = st.nextToken();
for(char ch : str.toCharArray()) { // for-Each문으로 바로 탐색 가능
System.out.println(ch);
}
번외) String형으로 변환
valueOf() : 괄호 안의 객체를 문자열로 변환
int n = 1;
double d = 3.14;
char c = 'a';
boolean b = true;
String str1 = String.valueOf(n); // "1"
String str2 = String.valueOf(d); // "3.14"
String str3 = String.valueOf(c); // "a"
String str4 = String.valueOf(b); // "true"
int n = 1;
Integer num = Integer.valueOf(n); // Integer 객체 1
double d = 3.14;
Double dnum = Double.valueOf(d); // Double 객체 3.14
toString() : 괄호 안의 객체를 문자열로 변환
int n = 1;
double d = 3.14;
char c = 'a';
boolean b = true;
String str1 = Integer.toString(n); // "1"
String str2 = Double.toString(d); // "3.14"
String str3 = Character.toString(c); // "a"
String str4 = Boolean.toString(b); // "true"
문자열 길이
String str = "Hello";
int len = str.length(); // 5
문자열 연결
String str1 = "Hello";
String str2 = "World";
String res = str1 + " " + str2; // Hello World
문자열 잘라내기
String str = "Hello World";
String res = str.substring(0,5); // Hello
문자열 비교하기
// String Pool에 저장(literal 할당)
String str1 = "Hello";
String str2 = "Hello";
System.out.println(str1 == str2); // true
System.out.println(str1.equals(str2)); // true
// Heap에 저장(생성자 할당)
String str3 = new String("Hello");
String str4 = new String("Hello");
System.out.println(str3 == str4); // false
System.out.println(str3.equals(str4); // true
StringBuilder sb = new StringBuilder();
// append()
sb.append("Hello"); // Hello
sb.append("World"); // Hello World
// substring(start, end)
sb.substring(0, 5); // Hello
// delete(start, end)
sb.delete(6, 11); // Hello
// insert(offset, str)
sb.insert(6, "Java"); // Hello Java
// toString()
String str = sb.toString();
→ StringBuffer도 사용법은 동일함