자바의 표준입출력을 다루기에 앞서 스트림(stream)에 대해 공부해야하나 스트림은 보통 자바백서의 거의 끝자락에 나오는 내용이므로.. 간단히 다루고 뒤에서 공부하는 것으로하자.
표준입출력은 결국 키보드로 입력받아 모니터로 출력하는것이다.
자바에선 System클래스를 사용해 표준입출력을 관리하는데, 이는 자바jvm이 운영체제의 기능을 일부 쓸수있다는 것을 의미한다.
System.out : 표준출력
System.in : 표준입력
System.error : 표준에러
1.InputStream
스트림은 결국 사전용어로 흐름이다. 말그대로 입력이 들어오고 , 출력으로 나가는 것을 말하는데 자바에선 입출력 스트림이 같을수는 없다. 따라서 자바에서 가장 기초가 되는 입력방법은 InputStream 이다.
?결과가 이상하다.
InputStream 은 바이트단위로 값을 읽기떄문에, 데이터를 저장하는 컴퓨터에는 바이트 단위로 데이터가 저장된다.
다만 100은 여기서 하나하나가 1바이트로 저장되기때문에 맨첫자리인 1이 아스키코드인 49로 출력되고,
a의 아스키코드인 97이 출력되는것을 볼 수 있다.
여기서 조금더 확자시키면, InputStreamReader라는것을 통해 문자입력까지 가능하다.
조금 더 확장해보자
BufferedReader를 통해 문자열까지 입력받을 수 있다.
결국 문자열 입력까지 inputstream을 통해 받을 수 있었다. 정리하자면
2.Scanner
앞으로 자바 입출력에는 inputsream이나 bufferedreader가 아닌 간단한 Scanner 클래스를 통해 입력을 받을
예정이다. 이는 2004년 JSE 5.0부터 추가되었다고하니 역사가 그리 깊진않다.
앞선 bufferdreader등과 비교해 훨씬 간단하게 표준입력을 수행한다.
scanner 클래스 method
next() : 문자열입력 (공백, 엔터전까지 입력)
nextLine() : 문자열입력(엔터전까지 입력)
next.charAt(0) : 문자입력
nextInt() : 정수입력
nextDouble() : 실수입력
3.결론
자바의 I/O에 관해 이번에는 여기까지만 다루고 뒤에서 스트림과 함께 입출력을 공부해보자.
아래는bufferedreader와 Scanner클래스의 차이에 관한 표인데 버퍼의 사이즈부터 문자열관련처리까지 사용법이 다르다. 속도는 bufferedreader가 훨씬 우세함을 보인다.