今天看书,把我弄迷糊了。
clear(),把极限设置为容量,再把位置设置为0。
flip(),把极限设置为位置,再把位置设置为0,
rewind(),不改变极限,把位置位置为0。
这些方法有什么用哦实际用处

解决方案 »

  1.   

    clear
    public final Buffer clear()清除此缓冲区。将位置设置为零,限制设置为该容量,并且丢弃标记。 
    在使用序列信道读取或 put 操作填充此缓冲区之前调用此方法。例如:  buf.clear();     // Prepare buffer for reading
     in.read(buf);    // Read data此方法不能实际擦除缓冲区中的数据,但从名称来看似乎能够擦除,因为它多数情况下确实是在擦除数据时使用的。 返回:
    此缓冲区flip
    public final Buffer flip()反转此缓冲区。首先对当前位置设置限制,然后将该位置设置为零。如果已定义了标记,则丢弃该标记。 
    在序列信道读取或 put 操作之后,调用此方法以做好序列信道写入或相对 get 操作。例如:  buf.put(magic);    // Prepend header
     in.read(buf);      // Read data into rest of buffer
     buf.flip();        // Flip buffer
     out.write(buf);    // Write header + data to channel当将数据从一个地方传输到另一个地方时,经常将此方法与 compact 方法一起使用。 
    返回:
    此缓冲区rewind
    public final Buffer rewind()重绕此缓冲区。将位置设置为零并丢弃标记。 
    在序列信道写入或 get 操作之前调用此方法(假定已经适当设置了限制)。例如:  out.write(buf);    // Write remaining data
     buf.rewind();      // Rewind buffer
     buf.get(array);    // Copy data into array
    返回:
    此缓冲区
      

  2.   

    clear() 使缓冲区做好了新序列信道读取或相对 put 操作的准备
    flip() 使缓冲区做好了新序列信道读取或相对 get 操作的准备 
    rewind() 使缓冲区做好了重新读取已包含的数据的准备先简单这样理解,只是针对不同的操作时候使用