Scanner
Java에서 데이터를 입력받을 때, 가장 손쉽고 빠르게 입력받을 수 있도록 도와주는 클래스이다.
이 Scanner 클래스는 java.util 패키지에 포함되어 있으며 문자, 정수, 실수를 입력받을 수 있도록 도와주고, 무엇보다 쓰기 너무 편하다.
Scanner의 객체를 만들 때는 System.in을 넣어 만드는데 이 System.in은 입력값을 바이트 단위로 입력받는 것을 의미한다.
한번 코드로 알아보자.
Scanner scanner = new Scanner(System.in);
이렇게 객체를 만든 뒤, scanner를 통하여 next() 메서드를 이용하여 입력값을 받을 수 있는데, 공백 이전까지의 값이 입력된다.
또한 각 입력 값을 받을때 원하는 자료형으로 입력받도록 메서드를 지원한다.
String insert = scanner.next(); // String 타입, 공백 기준으로 문자열을 입력받음
String insert = scanner.nextLine(); // String 타입, 문자열 전체를 입력받음
int insert = scanner.nextInt(); // int 타입
double insert = scanner.nextDouble(); // double 타입
float insert = scanner.nextFloat(); // float 타입
long insert = scanner.nextLong(); //long 타입
이 외에도, 입력값에 대한 처리를 돕는 다양한 메소드들이 존재한다.
BufferedReader
입력값이 많아질수록 가장 효율적이라고 생각하는 클래스이다.
이름 그대로 버퍼(임시 메모리)를 사용하기 때문에 해당 클래스에서 지원하는 메서드로 입력의 효율을 높일 수 있다.
Scanner와 차이를 비유해보자면 물을 10통 옮길 때, 한 통씩 옮기는 것과 바구니에 10통을 모두 담아 한 번에 옮기는 것과 같다고 생각한다. 그만큼 속도도 더 빠르다.

하지만 BufferedReader로 입력받으면 String을 다른 타입으로 변환한다거나, 공백을 기준으로 나눠주는 작업이 필요하기 때문에 어쩌면 더 귀찮을 수도 있을 것 같다.
하지만 split()메소드나 StringTokenizer의 nextToken() 같은 메서드들도 있기에 어느 정도 귀찮음이 상쇄되는 것 같다.
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
System.out.println(bufferedReader.readLine());

'Java' 카테고리의 다른 글
[Java] 예외 종류 (0) | 2022.02.08 |
---|---|
[Java] volatile 키워드 (0) | 2021.12.27 |