![[Java] - BufferedReader](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlnHyG%2FbtsyEwla2I1%2FREKB7rzQy4P1a00jx1g9kk%2Fimg.png)
역할
BufferedReader를 한 문장으로 정리하자면
Byte타입으로 전송되는 데이터를 Char형으로 변환하고 버퍼링을 적용하여 Char데이터를 반환한다.
Char타입으로 반환된다고 했는데 왜 문자열로 출력되는거지?
그 답은 바로 버퍼(Buffer)를 사용하기 때문이다.
Char타입 문자를 하나씩 입력받아 버퍼에 문자를 쌓아둔 뒤 한번에 문자열처럼 출력하기때문이다.
파해쳐보기
BufferdReader import
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
BufferedReader를 사용하기 위해서는 위 세 가지 구문을 import해와야한다.
IOException
BufferedReader를 사용하기위해서는 IOException처리를 해야합니다.
public static void main(String[] args) throws IOException
위와 같이 main메서드 뒤에 throws IOEception을 추가해주면 됩니다.
BufferedReader 객체생성
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
InputStreamReader에 대해서도 설명하고 싶어 여기저기 설명 글 읽어보고 책에서도 찾아봤지만, 100%이해하기 어렵기도하고..
딥하게 들어가야 정확하게 설명할 수 있다고 생각하기때문에 스트림에대해서는 후에 따로 블로깅하도록하겠다..
지금은 BufferedReader설명하는 것도 벅차다..
BufferedReader 메서드
BufferedReader는 문자열을 입력받기 위해 대표적으로 read()와 readLine()을 사용한다.
readerLine()은 한 줄을 읽어오고, read()는 한 문자만 읽어온다.
Scanner의 next()와 nextLine()과 비슷하지만 다르다는걸 알아두자
read()
read()의 경우에는 한 문자만 읽어오며, 읽어온 문자를 아스키코드로 읽기때문에 정수형태로 반환된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int a = br.read();
System.out.println(a);
br.readLine();
int b = br.read();
System.out.println(b);
}
}
이해하기 쉽게 직접 코드를 작성해보고 실행결과를 살펴보자

0을 입력하면 아스키코드인 48이 반환되고, a를 입력하면 97이 반환되는걸 확인할 수 있다.
또한 read()는 공백도 인식하여 읽는다.
이러한 이유로 read()메서드는 잘 사용하지않고 보통 readLine()메서드를 사용한다.
정리
BufferedReader와 Scanner의 차이는
BufferedReader는 문자열을 단순히 읽고 저장하는 것이 주 목적이며, Scanner는 문자열을 사용자가 사용하기 쉽게 가공을 해줍니다.
이 과정에서 속도는 저하되기때문에 단순히 입력을 위해서는 BufferedReader를 사용하는것이 속도면에서 효율적이라고 할 수 있습니다.
'Language > Java' 카테고리의 다른 글
[JAVA] 다형성 (0) | 2024.06.02 |
---|---|
[Java] - 배열(Array) (0) | 2023.10.23 |
[Java] - BufferedWriter (0) | 2023.10.18 |
[Java] Scanner (0) | 2023.10.18 |
연산자와 타입의 범위 (0) | 2023.08.06 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!