IT/Java
[Java] 입출력 클래스(Scanner, BufferedReader, StringTokenizer)
올빼밋.
2022. 12. 27. 17:17
728x90
속도 비교
Scanner <BufferedReader <StringTokenizer
Scanner | BufferedReader | StringTokenizer |
- 다양한 기능을 지원해서 무거움 | - 데이터를 라인 단위로 읽기 위해 사용 - 잘라서 배열과 같이 인덱스로 접근하여 사용 |
- 구분자를 기반으로 토큰을 분리하기 위한 도구 - 문자열을 파싱하고 조각으로 나눌때 사용 - 문자열의 공백 자리를 땡겨 채운다(nextToken()) - 정규식,인덱스 접근 처리가 필요없다면 효율적(split은 정규식을 기반으로 자르는 로직으로 내부가 복잡) |
입력
1. Scanner
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
2. BufferedReader
import java.io.*;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] input = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
3. StringTokenizer
import java.io.*;
import java.util.StringTokenizer;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
LinkedList<Integer> list = new LinkedList<>();
while(st.hasMoreTokens()){ // hasMoreTokens(): 리턴할 다음 토큰이 있으면 true, 없으면 false
list.offer(new Integer(st.nextToken())); // nextToken(): 다음 토큰 리턴, 이전 토큰 제거
}
// countTokens(): 토큰의 갯수를 리턴
출력
1. System.out.println
System.out.println("hi");
2. BufferedWriter
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write("data");
bw.flush(); // 스트림을 닫지 않은 상태에서 바이트를 내보냄
bw.close(); // 스트림을 닫음과 동시에 바이트를 내보냄
728x90