빙응의 공부 블로그
[JAVA] Buffered와 StringTokenizer 본문
📝개요
나는 보통 코딩테스트를 연습할 때 Scanner를 사용하였다.
그런데 Buffered와 StringTokenizer을 통해 더 빠르게 할 수 있다고 한다.
🚩Scanner란?
Scanner 클래스는 기본 데이터 타입과 문자열을 구문 분석할 수 있는 클래스를 말한다.
예를 들면 숫자나 문자열 등을 분석해준다.
🚩 BufferedReader를 사용하는 이유는?
코딩테스트는 시간제한이 존재한다. Scanner는 BufferedReader보다 느리기에 코딩테스트에서 사용하지 않는다.
🚩BufferedReader가 빠른이유
Scanner는 입력 즉시, 프로그램에 전송 되고,
BufferdReader는 Reader 클래스의 하위 클래스이며,
Buffer를 사용해서 입력을 받기 때문에 더 빠르다.
📝BufferedReader
BufferedReader는 사용자의 입력을 버퍼 형태로 받아온다.
중요한 특징은 Scanner보다 빠르다는 것
🚩BufferedReader 사용법
BufferedReader br = new BufferedReader(new inputStreamReader(System.in));
String a = br.readLine(); //한줄을 읽어 a변수에 넣는다.
int b = Integer.parseInt(br.readLine()); //한줄을 읽어 숫자로 파싱하여 b변수에 넣는다.
왜 inputStreamReader를 쓸까? 그 이유는 사용 시 주로 문자 인코딩을 고려하여 바이트 스트림을 문자 스트림으로
변환하기 위해서 이다. System.in은 표준 입력 스트림으로, 바이트 스트림이다. 따라서 이를 문자로 읽으려면 InputStreamReader로 변환해야한다.
즉, 나는 키보드로 받을거야(System.in) 그리고 이걸 문자로 읽을거야(InputStreamReader) 읽은 것을 버퍼 형태로 받아올거야(BufferedReader)이다.
📝BufferedWriter
BufferedWriter는 문자 출력 스트림을 버퍼를 통해 효율적으로 데이터를 출력하는 데 사용한다.
물론 BufferedWriter처럼 SOUT보다 빠르다.
🚩BufferedWriter 사용법
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); //할당된 버퍼에 값 넣어주기
String s = "abcdefg"; //출력할 문자열
bw.write(s+"\n"); //버퍼에 있는 값 전부 출력
bw.flush(); //남아있는 데이터를 모두 출력시킴
bw.close(); //스트림을 닫음
📝StringTokenizer
StringTokenizer는 문자열을 사용자가 지정한 구분자로 분리시키는 클래스이다.
분리된 것을 토큰이라 한다.
🚩StringTokenizer 사용법
StringTokenizer st = new StringTokenizer(s); //StringTokenizer인자값에 입력 문자열 넣음
int a = Integer.parseInt(st.nextToken()); //첫번째 호출
int b = Integer.parseInt(st.nextToken()); //두번째 호출
String array[] = s.split(" "); //공백마다 데이터 끊어서 배열에 넣
자바에서 구분자로 분리하는 것은 2가지 방법이 있다.
- StringTokenizer를 통해 분리
- split()를 통한 분리
'JAVA' 카테고리의 다른 글
[JAVA] Record와 DTO (1) | 2024.10.02 |
---|---|
[JAVA] StringBuilder (0) | 2024.07.03 |
[JAVA]함수형 프로그래밍 - Stream API 고급 (1) | 2023.12.02 |
[JAVA]함수형 프로그래밍 - Stream API 사용법 (1) | 2023.11.30 |
[JAVA]함수형 프로그래밍 - 람다식(Lambda Expression) (2) | 2023.11.29 |