public static void main(String[] args) {
String str = "helloWorld123";
ByteBuffer buff = ByteBuffer.wrap(str.getBytes());
// buff.allocate(100);
System.out.println("position:"+buff.position()+"\t limit:"+buff.limit());
//读取两个字节 getInt()读取4个字节
// System.out.println(buff.getInt());
// System.out.println((char)buff.get());
// System.out.println((char)buff.get());
// System.out.println((char)buff.get());
// System.out.println("position:"+buff.position()+"\t limit:"+buff.limit());
// buff.mark();
System.out.print((char)buff.get());
System.out.print((char)buff.get());
System.out.print((char)buff.get());
System.out.print((char)buff.get());
System.out.print((char)buff.get());
System.out.print((char)buff.get());
System.out.print((char)buff.get());
System.out.print((char)buff.get());
System.out.print((char)buff.get());
// buff.rewind();
// buff.clear();
System.out.println("position:"+buff.position()+"\t limit:"+buff.limit());
buff.compact();
System.out.println("____");
System.out.println("position:"+buff.position()+"\t limit:"+buff.limit());
buff.position(0);
System.out.print((char)buff.get());
System.out.print((char)buff.get());
System.out.print((char)buff.get());
System.out.print((char)buff.get());
System.out.print((char)buff.get());
System.out.print((char)buff.get());
System.out.print((char)buff.get());
System.out.print((char)buff.get());
System.out.println("____");
// System.out.println("position:"+buff.position()+"\t limit:"+buff.limit());
buff.clear();
System.out.print((char)buff.get());
System.out.println("position:"+buff.position()+"\t limit:"+buff.limit());
// System.out.println(buff.order());
// buff.reset();//清除标记
System.out.println("position:"+buff.position()+"\t limit:"+buff.limit());
}
结果:
position:0 limit:13
helloWorlposition:9 limit:13
____
position:4 limit:13
d123oWor____
dposition:1 limit:13
position:1 limit:13
可以看出compact()方法是将position到limit后面的所有字符串复制到buff最前面,同时postion设置为(所复制串长度-1)