2020-09-21 TIL ing
io ex04 ~ ex08 입출력 중요
int 출력
- out.write();
- 출력할 때는 맨 끝 1바이트만 출력한다.
- in.read();
- 1바이트를 읽어 int 값으로 만든 후 리턴한다.
- out.write(); 를 사용할 때 int 메모리의 모든 바이트를 출력하려면 각 바이트를 맨 끝으로 이동한 후 wirte() 로 출력한다.
- 이동할 때는 비트 이동 연산자를 사용한다.
str.getByte()
- str.getByte(문자코드표)
- ex ) out.write(str.getByte(“UTF-8));
- 문자열을 지정한 문자코드표에 따라 인코딩하여 바이트 배열을 만든다.
- 바이트 배열에 들어있는 값을 사용하여 String 인스턴스를 만든다.
- new String(바이트 배열, 시작번호, 개수, 문자코드표)
- ex ) new String(buf, 0, 10, “UTF-8”)
버퍼
- 버퍼를 사용하면 파일을 읽고 쓰는 속도가 빨라진다.
- flush(); 를 사용하면 버퍼가 아직 다 차지 않은 상태에서 버퍼에 있는 데이터를 강제로 모두 내보내고 버퍼를 비운다.
상속을 통한 기능 확장의 문제점
- 자바는 다중 상속이 불가능하기 때문에 여러 클래스에 있는 기능을 조합하려면 별도의 클래스를 생성하여 기존 코드를 복사해 와야 한다.
- 결국 코드가 중복되는 문제가 발생한다.
- 또한 중복 코드를 갖는 클래스가 많이 생성된다.
- 이 문제점을 해결하기 위해 확장 기능을 붙였다 뗄 수 있게 한다.
- Decoration Design Pattern
- 모든 부품은 같은 유형이다.
- 즉, 같은 부모의 자식이 되게 한다.
- 다른 부품을 붙일 수 있도록 생성자를 만든다.
- Decoration Design Pattern
- 부품을 추가할 때는 기존의 객체에 플러그인을 장착한다.