对于循环...帮助

0 java

有人能帮我理解这个循环吗?

byte tempBuffer[] = new byte[64*1024];

for (int i = 0; i < tempBuffer.length; i++) {
    wavPanel.addAudioByte(tempBuffer[i]);
}
Run Code Online (Sandbox Code Playgroud)

在我看来它的工作原理如下:

  • 在此期间,循环次数与tempBuffer的大小相同
  • 用字节填充tempBuffer或者执行n次对象的addAudioByte()方法wavPanel

对不起我的困惑.

有人可以用语言告诉我循环的作用吗?

提前致谢.

卡洛斯弗雷拉

Rof*_*ion 9

字节数组的大小为64*1024,因此循环执行64*1024次.每次循环执行时,字节数组中的下一个字节将作为参数传递给方法addAudioByte(以第0个元素开头).

addAudioByte(byte byt)方法的作用取决于此方法的实现.

要回答你在最后一个答案中提到的问题:

byte b代表传递给方法addAudioByte(...)的参数.这意味着要调用此方法,您必须将数据类型字节传递给此方法.此链接说明了字节数据类型.


Edw*_*uck 7

它叫

wavPanel.addAudioByte(...)
Run Code Online (Sandbox Code Playgroud)

对于tempBuffer中的每个64*1024(65536)字节,如下所示:

wavPanel.addAuditByte(tempBuffer[0]);
wavPanel.addAuditByte(tempBuffer[1]);
wavPanel.addAuditByte(tempBuffer[2]);
wavPanel.addAuditByte(tempBuffer[3]);
wavPanel.addAuditByte(tempBuffer[4]);
....
Run Code Online (Sandbox Code Playgroud)

最终以64*1024-1字节结束

...
wavPanel.addAuditByte(tempBuffer[65535]);
Run Code Online (Sandbox Code Playgroud)

请记住,虽然此数组中有65*1024个字节,但由于数组开始索引为0,因此您不能要求第65536个索引,因为如果从零开始计算它们,那么它tempBuffer[65536]实际上将是第65537个字节