BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
/**
* The "standard" input stream. This stream is already
* open and ready to supply input data. Typically this stream
* corresponds to keyboard input or another input source specified by
* the host environment or user.
*/
public static final InputStream in = null;
해당 InputStream 으로 콘솔 입력을 받는 것으로 보인다.
System 클래스에는
initPhase1 라는 초기화 함수가 존재하는데
FileInputStream fdIn = new FileInputStream(FileDescriptor.in);
FileOutputStream fdOut = new FileOutputStream(FileDescriptor.out);
FileOutputStream fdErr = new FileOutputStream(FileDescriptor.err);
setIn0(new BufferedInputStream(fdIn));
FileInputStream 을 통하여 File 을 읽어들인다고 볼 수 있다.
InputStreamReader
는 바이트 스트림을 문자 스트림으로 변환하는 데 사용되는 브리지 클래스이다.System.in
에서 입력받은 데이터는 바이트기 기반 입력 스트림으로서, 사람이 이해할 수 없는 형태로 기록되어 있는 상태이다.public InputStreamReader(InputStream in) {
super(in);
sd = StreamDecoder.forInputStreamReader(in, this,
Charset.defaultCharset()); // ## check lock object
}
BufferedReader
는public BufferedReader(Reader in) {
this(in, defaultCharBufferSize);
}
*defaultCharBufferSize
= 8192*
- 사이즈를 가진다.
public BufferedReader(Reader in, int sz) {
super(in);
if (sz <= 0)
throw new IllegalArgumentException("Buffer size <= 0");
this.in = in;
cb = new char[sz];
nextChar = nChars = 0;
}
내부적으로 char[버퍼사이즈] 의 크기를 버퍼링을 수행한다.
가
를 UTF-8 로 인코딩 ( 문자를 바이트스트림으로)가
유니코드 : U+AC00EAB080
( 16진수) , 이진수로는 11101010 10110000 10000000
라고함.A
의 바이트 스트림U+0041
41
(16진수)01000001