关于ByteBuffer中flip和rewind方法的作用说明

关于flip,看到JDK的文档大概是这么说的:“将limit属性设置为当前的位置”;而关于rewind方法,是在limit属性已经被设置合适的情况下使用的。也就是说这两个方法虽然都能够使指针返回到缓冲区的第一个位置,但是flip在调整指针之前,将limit属性设置为当前位置。以下程序可以验证:


import java.nio.*;


public class IntBufferDemo {


/**
* @param args
*/

private static final int BSIZE = 1024;

public static void main(String[] args) {
// TODO Auto-generated method stub
ByteBuffer bb = ByteBuffer.allocate(BSIZE);
IntBuffer ib = bb.asIntBuffer(); // view buffer

// 存储int的数组
ib.put(new int[]{11, 42, 47, 99, 143, 811, 1016});

// 绝对位置读写
//System.out.println(ib.get(3));

System.out.println("*******************************");
System.out.println(ib.limit());
ib.put(3, 1811);
ib.flip();
System.out.println(ib.limit());
System.out.println("*******************************");
//ib.rewind();

while(ib.hasRemaining()){
int i = ib.get();
System.out.println(i);
}
}


}

如果将ib.flip() 换成ib.rewind()的话,我们会看到除了打印出数组中我们设置的内容之外,还会在后面打印出一系列自动设置的零值。

你可能感兴趣的:(jdk,String,存储,Class,文档,import)