Development Log
[JAVA] 입력(Input) 본문
자바에서 가장 기본이 되는 입력/출력 스트림은 InputStream/OutputStream 이다.
BufferedReader br = new Buffered(new InputStreamReader(System.in));
System.in
- System.in은 InputStream 타입의 필드이다.

System 클래스의 in이라는 필드는 InputStream의 정적 필드다. - System 클래스 in 변수는 표준 입력 스티림이다.
- 일반적으로 콘솔, 명령줄 인수 등을 통해 입력을 받을 수 있다.
- 즉, 키보드나 터미널 등에서 입력을 넣어주는 것들은 System.in을 통해 연결된다는 의미이다.
- 아래와 같이 사용할 수 있다.
public static void main(String[] args) throws IOException { InputStream inputstream = System.in; int a = inputstream.read(); System.out.println(a); }
InputStream.read() 특징
- 해당 문자의 시스템 또는 운영체제의 인코딩 형식의 10진수로 변수에 저장한다.
- 1byte만 읽는다.
컴퓨터의 모든 데이터는 바이트 단위 데이터로 구성되어있다.
데이터 저장, 전달해도 컴퓨터에는 바이트 단위로 데이터가 저장된다.
문제 발생 => 1byte만 인식해 한글을 입력해도 읽지 못하고 엉뚱한 문자가 나온다.
위와 같은 문제를 해결하고자 문자를 온전하게 읽기위해 확장시킨 것이 InputStreamReader이다.
InputStreamReader
- InputStream의 바이트 단위로 읽어 들이는 형식을 문자단위(character)로 데이터 변환시키는 중개자 역을 한다고 볼 수 있다.
특징
- 바이트 단위 데이터를 문자(character) 단위 데이터로 처리할 수 있도록 변환해준다.
- char 배열로 데이터를 받을 수 있다.
문제 발생 => 문자열을 입력 받을 경우 매번 배열을 선언해야한다는 단점이 그대로 남아있다.
BufferedReader
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
▽ 아래와 같이 풀어 쓸 수 있다.
InputStream inputstream = System.in;
InputStreamReader sr = new InputStreamReader(inputstream);
BufferedReader br = new BufferedReader(sr);
- 기본적으로 바이트 스트림인 InputStream을 통해 바이트 단위로 데이터를 입력 받는다.
- 입력 데이터를 char 형태로 처리하기 위해 중개자 역할인 문자 스트림 InputStreamReader로 감싸준다.
- Buffer(버퍼)를 통해 입력 받은 문자를 쌓아둔 뒤 한번에 문자열처럼 보낸다.
- 한번에 모아둔 다음 보내고 별다른 정규식을 검사하지 않아 속도가 빠르다.
특징
- 버퍼가 있는 스트림이다.
- 별다른 정규식을 검사하지 않는다.
※ Scanner의 경우 정규식 검사를 많이하기 때문에 타입 변환의 안전성에는 좋지만 속도가 느리다.

버퍼를 따로 설정하지 않으면 기본으로 8192개의 문자를 저장할 수 있다.
기본적으로 개행이 입력되거나 버퍼가 꽉 차게 되면 버퍼를 비우면서 프로그램으로 데이터를 보낸다.
| Byte Type | InputStream |
| Char Type | InputStreamReader |
| Char Type의 직렬화 | BufferedReader |
🙄
백준 문제를 풀며 사용하는 InputStreamReader.. System.in... 등
데이터를 보내는 통로라는 느낌만 기억하고 있어서 이론을 다시 짚어보기 위해 작성한다.
JAVA [자바] - 입력 뜯어보기 [Scanner, InputStream, BufferedReader]
이 글을 지금 이 시점에 써야 할까 고민을 많이 했다. 사실 자바를 그냥 다룰 줄만 아는 것에 목표를 둔다면 이 글이 무의미할 수도 있다. 그러나 자바에 대해 조금이라도 관심이 있고 더 배우고
st-lab.tistory.com