Java nio Buffer.get() Buffer.put()

最近在看编程思想的时候一直对nio中的一些类的方法的运作方式感到十分疑惑,比如Channel.read(buffer),Channel.write(buffer),Buffer.get(),Buffer.put().

在翻阅源代码后发现Java的Buffer,CharBuffer源码中都看不到get(),put()方法的具体实现,这些方法都是抽象方法。当然其也有重载版本的具体实现,但是我想了解的那一部分却是抽象的。

于是根据编程思想P561的程序,对get()和put()的性质做个小总结:
一旦调用缓冲器上的get()和put()方法,position指针就会随之相应变化

对于get()行为,根据代码结果可以得到(以CharBuffer为例):
get()方法返回当前postion所指的数组值,并将position值+1

对于put(char c)行为:
将当前position的值置为c,并将position值+1

关于clear()方法,书上对clear()的作用是这样解释的:
清空缓冲区,将position置0,limit置为capacity
在源码中我找到了对clear()的描述:

This method does not actually erase the data in the buffer, but it is named as if
it did because it will most often be used in situations in which that might as well 
be the case. 

所以调用clear()方法,缓冲区还是会有数据的,只不过之后读入缓冲区的数据会将旧值覆盖。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值