버퍼는 데이터를 효율적으로 전달하기 위한 '객체'이다. 기존 IO에 대한 성능 개선을 위한 것으로 언뜻보면 포인터의 개념과
비슷하다고 생각했다.
속성으로는 4가지가 있는데
position은 버퍼의 현재 읽고 쓰는 위치를 나타내는 것이고, limit는 버퍼의 한계 위치. capacity는 버퍼의 크기이고, mark는 현재
position의 위치를 저장해놓는 역할을 한다.
이 4가지의 속성들을 잘 이해해야 Exception을 방지할 수 있다.
버퍼에 데이터를 넣는 방법은 put을, 데이터를 추출하는 것은 get을 이용한다. 그리고 자료형에 맞게끔 putInt, putFloat등의
메소드를 지원하기 때문에 효과적으로 데이터 입출력이 가능하다.
간단한 예제를 보면서 테스트 해보자.
allocate는 버퍼의 크기를 지정한다. 버퍼의 크기를 지정하면 limit와 capacity는 10이 되고 position는 0, mark는 -1로 초기화가 된다.
데이터는 put메소드로 넣는데 byte2개와 int하나 float하나씩 넣어서 총 10byte로 맞췄다.(만약 버퍼의 크기보다 크다면 Exception)
처음 buffer를 출력하여 속성값을 확인해보고 데이터를 넣은다음에 flip을 걸고 get을 이용하여 출력을 했다.
출력은 get으로 하는데 flip을 걸었기 때문에 0부터 시작해서 순서대로 뽑아주면 된다.
*filp() - 현재 위치의 posion을 limit으로 변경하고 자신은 0으로 바꾸는 메소드.
'Java' 카테고리의 다른 글
System.arrayCopy (0) | 2012.04.24 |
---|---|
각 자료형<->byte (0) | 2012.04.24 |
접근자 (0) | 2012.04.06 |
다형성 (0) | 2012.04.03 |
추상클래스(abstract), 인터페이스(interface) (0) | 2012.03.29 |