如果在IF条件语句中使用buffer.get(),是否需要使用buffer.rewind()?

时间:2019-08-11 18:33:10

标签: java if-statement int conditional-statements buffer

示例。检查此条件后,缓冲区的位置是否会移动?

if (variable==buffer.get()) { do something; buffer.rewind() }

1 个答案:

答案 0 :(得分:1)

由于您指的是IntBuffer,因此:

get()的Javadoc说:

  

读取此缓冲区当前位置的int,然后增加该位置

因此,如果if语句为false,则缓冲区肯定已移动。

如果if语句为true,则调用rewind(),并且javadoc说:

  

该位置设置为零,并且标记被丢弃。

因此,如果在if语句之前位置最初不是零,则缓冲区移回零。

概述:如果缓冲区位置最初是在开头,并且if语句为true,则该代码会将缓冲区保留在相同位置,否则缓冲区将为“感动”。