[JAVA] Scanner vs BufferedReader

Yumi Kim·2025년 1월 18일

Java 알고리즘

목록 보기
1/17
post-thumbnail

비교

Scanner는 간단한 입력을 다룰 때 사용하고, BufferedReader는 대용량의 데이터를 빠르게 읽거나 성능이 중요할 떄 사용한다.

ScannerBufferedReader
큰 입력을 처리할 때 속도가 느림상대적으로 빠름
다양한 타입 처리대용량 데이터 읽기
Multi-Thread 환경에서 안전하지 않음Multi-Thread 환경에서 안전함
사용이 간편복잡한 코드가 필요

Scanner

화면으로부터 데이터를 입력받는 기능을 제공하는 class

import java.util.Scanner;

//main
Scanner scanner = new Scanner(System.in); 
int num = scanner.nextInt();
  • 공백 또는 개행 단위로 데이터를 읽어온다.
in.nextByte()		// byte 형
in.nextShort()		// short 형
in.nextInt()		// int 형
in.nextLong()		// long 형
 
in.nextFloat()		// float 형
in.nextDouble()		// double 형
 
in.nextBoolean()	// boolean 형 
 
in.next()			// String 형(공백 기준 한 단어)
in.nextLine()		// String 형(개행 기준 한 줄)

BufferedReader

buffer를 이용하는 함수

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
  • String으로 return 값이 고정되어 있어, 다른 type으로 입력을 받으려면 형변환과 예외처리가 필요하다.
int i = Integer.parseInt(br.readLine());
public static int string2Integer(String s) {
	return Integer.parseInt(s);
}
// main
static StringTokenizer st = new StringTokenizer(br.readlLine());
int i = si(st.nextToken());
  • 개행 단위로 데이터를 읽어온다.
  • 공백 단위로 데이터를 읽어오려면 아래와 같이 가공해야 한다.
// StringTokenizer 
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
  • 출력할 때도 buffer를 사용할 수 있다.
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); 
bw.write(s); 
bw.newline();
bw.write(s+"\n");
bw.flush();
bw.close();
profile
✿.。.:* ☆:**:. 🎀 Daily Study 🎀 .:**:.☆*.:。.✿

0개의 댓글