2017-04-18 12 views
0

내가이 줄을 발견했다.?정확히이 ByteBuffer.allocate() 메소드로 생성되는 것은 무엇입니까? Java 응용 프로그램에

ByteBuffer b = ByteBuffer.allocate(Integer.SIZE/8); 

그것은 내가 읽고 단일 바이트를 작성하는 데 사용되는 생각의 (a 의 ByteBuffer 목적을지지를 뜻 그래서 나는 넣어 만 읽을 수 이 개체의 바이트?).

따라서 ByteBuffer.allocate() 메서드는 Byte를 반환하는 팩터 리 방법과 비슷합니다.

정확히 Integer.SIZE/8 값을 입력 매개 변수로 전달하여 할당하는 것은 무엇입니까?

+2

아니오,'Integer.SIZE'는 32, 그래서 그것은 4 바이트 버퍼를 생성합니다. 그리고 아니요, Byte를 반환하지 않습니다. ByteBuffer를 반환합니다. –

+0

[JavaDoc] (https://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html#allocate (int))도 읽었습니까? –

답변

0

Integer.SIZE/8 값을 입력 매개 변수로 정확히 할당하는 것은 무엇입니까?

4 바이트 용량 (32/8)의 ByteBuffer 인스턴스를 생성 중입니다.
ByteBuffer 인스턴스에 정수 (또는 4 바이트)를 두 개 이상 넣으면 java.nio.BufferOverflowException이 발생합니다.

그것은 ByteBuffer를 객체를 생성한다 (I 읽고 단일 바이트를 작성하는 데 사용되는 생각. 나는두고이 개체 에서 바이트를 읽을 수있는 뜻 그래서 뭐? 그게?).

당신은 byte에 넣어뿐만 아니라 다른 모든 기본 유형 부울을 제외 할 수 있습니다 int, long, short, floatdouble.
put(byte b) 메서드는 바이트를 씁니다. putInt(int value)은 int를 씁니다. 등을 위해 ..

는 그래서 ByteBuffer.allocate() 메소드는 바이트를 돌려 공장 방법 같은 것 같다.

그것은 참으로 공장 방법이지만 Byte하지만 ByteBuffer 인스턴스를 반환 할 수 없습니다. 실제로 클라이언트 클래스에서 ByteBuffer 클래스는 인스턴스화 할 수 없습니다.이 클래스는 추상 클래스입니다.

그래서 ByteBuffer.allocate()ByteBuffer 클래스의 구현을 인스턴스화하고 클라이언트에 반환

ByteBuffer allocate = ByteBuffer.allocate(Integer.SIZE/8); 

그래서 당신이 쓸 수 있습니다 :

allocate.putInt(1);