일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 유닉스
- flet
- 고전역학
- chatGPT's answer
- spring data jpa
- Java
- GPT-4's answer
- android
- 웹 크롤링
- 자바네트워크
- NIO
- 소프트웨어공학
- 파이썬
- JVM
- 자바암호
- 시스템
- 자바
- write by chatGPT
- python
- jpa
- 리눅스
- spring integration
- 인프라
- 데이터베이스
- 역학
- Database
- write by GPT-4
- 코틀린
- oracle
- kotlin
- Today
- Total
기억을 지배하는 기록
자바 nio - 7 본문
7. CharBuffer 클래스
CharBuffer는 char 데이터 유형을 대상하는 버퍼로 특징은 1.4부터 추가된 java.lang.CharSequence 인터페이스를 구현하고 있다는 점이다. 다음은 CharBuffer의 클래스 선언문이다.
public abstract class CharBuffer extends Buffer implements Comparable , CharSequence |
CharSequence 인터페이스를 구현하기 때문에, 문자 순서를 받아들일 수 있는 장소이면 어디에서라도, char 버퍼를 사용할 수 있다. 예를 들어, 1.4부터 추가된 정규 표현의 패키지 java.util.regex 에서의 사용이 가능하다. 또한 wrap()메서드에서 char[] 배열 대신에 CharSequence 객체가 들어 올 수 있어서 String이나 StringBuffer를 wrap()해서 CharBuffer로 만들 수 있다.
CharSequence 인터페이스 JDK 1.4부터 추가된 인터페이스로서 CharSequence 는 읽어들일 수 있는 문자 순서를 나타낸다. 이 인터페이스는, 다양한 종류의 문자 순서에의 통일된 read 전용 액세스를 제공한다. << 메서드 >> - char charAt (int index) : 지정된 인덱스 위치에 있는 문자를 리턴 - int length () : 이 문자 순서의 길이를 리턴. - CharSequence subSequence (int start, int end) : 이 순서의 서브 순서인 신규 문자 순서를 리턴. - String toString () : 이 순서와 같은 순서로 문자를 포함한 스트링을 리턴. 구현 클래스 : CharBuffer , String , StringBuffer |
모든 버퍼류 클래스의 객체들은 toString()메서드 호출시 자신의 여러 설정들을 보여준다. 가령 예를 들어 다음과 같이 코드를 작성해서 실행을 했다고 하자.
IntBuffer buf=IntBuffer.allocate(10);
System.out.println("생성된 후:"+buf);//자동 toString() 호출....당연,,,
==>실행 결과
생성된 후 : java.nio.HeapIntBuffer[pos=0 lim=10 cap=10]
하지만 CharBuffer는 자신이 가지고 있는 char들을 보여준다. 따라서 CharBuffer의 여러 값들을 보고자 할때에는 메서드를 사용해야 한다.CharBuffer에는 위같은 사실만 알고 있으면 사용하는데는 별 무리가 없다.
1. 예제
package nio; import java.nio.*; public class CharBufferTest { public static void main(String[] args) { CharBufferTest test = new CharBufferTest(); test.exec(); } public void exec() { String s = "String 문자열"; CharBuffer buf = CharBuffer.wrap(s); System.out.println(" pos:" + buf.position() + " limit:" + buf.limit() + " cap:" + buf.capacity()); buf.clear(); while (buf.hasRemaining()) { System.out.print(buf.get()); } System.out.println("\n" + "-------------------------"); StringBuffer s2 = new StringBuffer("StringBuffer 문자열"); CharBuffer buf2 = CharBuffer.wrap(s2); System.out.println(" pos:" + buf2.position() + " limit:" + buf2.limit() + " cap:" + buf2.capacity()); buf2.clear(); while (buf2.hasRemaining()) { System.out.print(buf2.get()); } } } |
<< 실행 결과 >>
C\>java CharBufferTest pos:0 limit:10 cap:10 String 문자열 ------------------------- pos:0 limit:16 cap:16 StringBuffer 문자열 |
소스를 보면 두 개의 CharBuffer를 생성해서 하나는 String 을 데이터로, StringBuffer를 데이터로 삽입한다. 이것이 가능한 이유는 앞서 말했지만 CharSequence 인터페이스를 구현하기 때문이다. 그리고 CharBuffer의 객체를 출력시 값을 알기위해서 다음과 같이 출력함을 볼 수 있다.
System.out.println("pos:"+buf.position()+" limit:"+buf.limit()+" cap:"+buf.capacity());
'오래된글 > Java' 카테고리의 다른 글
자바 nio - 9 (0) | 2018.04.09 |
---|---|
자바 nio - 8 (0) | 2018.04.09 |
자바 nio - 6 (0) | 2018.04.09 |
자바 nio - 5 (0) | 2018.04.09 |
자바 nio - 4 (0) | 2018.04.09 |