정석 3.3~3.4는 스킵한다… DataStream과 관련된 내용은 관련 알고리즘 문제를 풀거나 업무를 해야하는 일이 있을때 공부해도 늦지 않을 것 같다..
이 클래스는 데이터를 기반스트림에 다양한 형태로 출력할 수 있게끔 하는 print()
, println()
, printf()
같은 메서드를 오버로딩해 제공한다.
PrintStream은 데이터를 적절한 문자로 출력하기 때문에 문자기반 스트림의 역할을 수행하는 것과 유사하다. JDK1.1부터는 PrintStream보다 향상된 기능의 문자기반 스트림인 PrintWriter
가 추가되었지만… 그동안 System.out을 너무 빈번히 사용하다보니 결국 PinrtStream은 도태되지 않고 아직도 살아남았다.
지금까지 우리가 사용한 System클래스의 static멤버인 out과 err가 PrintStream 객체이다.
위는 PrintStream의 생성자와 메서드이다.
print(), printf(), println()메서드는 모두 출력소스에 인자로 주어진 값을 문자로 출력하는 기능을 한다는 점을 기억하자. 보통은 출력소스가 우리의 모니터이다.
println()
이나 print()
는 출력하는 중에 기반스트림에서 IOException이 발생하면 내부에서 처리하도록 정의되어 있다. 왜냐하면 너무 자주사용되는 메서드인데, 그때마다 try-catch로 예외처리해주면 굉장히 귀찮기 때문이다. 만약 예외가 발생하면… 이는 checkError()메서드를 통해 인지할 수 있다.
printf()는 JDK1.5부터 추가된 것으로, C언어와 같이 편리한 형식화된 출력을 지원한다.
형식지정자는 C와 거의 유사하다. 10진수 d, 8진수 o, 16진수 x, 문자 c, 문자열 s,
$n$자리 $n$d, $n$자리 왼쪽 정렬 -$n$d, $n$자리 빈자리 0삽입 $0n$d
지수표현 e, 실수표현 f,