2020-09-21 TIL ing

less than 1 minute read

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
      • 모든 부품은 같은 유형이다.
      • 즉, 같은 부모의 자식이 되게 한다.
      • 다른 부품을 붙일 수 있도록 생성자를 만든다.
  • 부품을 추가할 때는 기존의 객체에 플러그인을 장착한다.

Categories:

Updated: