对于循环...帮助

时间:2010-07-06 14:59:31

标签: java

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

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

for (int i = 0; i < tempBuffer.length; i++) {
    wavPanel.addAudioByte(tempBuffer[i]);
}

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

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

抱歉我的困惑。

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

提前致谢。

Carlos Frerera

3 个答案:

答案 0 :(得分:9)

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

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

要回答你在上一个回答中提到的问题:

byte b代表传递给方法addAudioByte(...)的参数。这意味着要调用此方法,您必须将数据类型字节传递给此方法。 This link解释了字节数据类型。

答案 1 :(得分:7)

它叫

wavPanel.addAudioByte(...)

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

wavPanel.addAuditByte(tempBuffer[0]);
wavPanel.addAuditByte(tempBuffer[1]);
wavPanel.addAuditByte(tempBuffer[2]);
wavPanel.addAuditByte(tempBuffer[3]);
wavPanel.addAuditByte(tempBuffer[4]);
....

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

...
wavPanel.addAuditByte(tempBuffer[65535]);

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

答案 2 :(得分:1)

这是一个显示基础知识的小例子。让我们用一个只有四个值的小数组:

byte[] tempBuffer = new byte[4];
tempBuffer[0] = 10;
tempBuffer[1] = 10;
tempBuffer[2] = 10;
tempBuffer[3] = 10;

tempBuffer.length是数组的大小(4个插槽),数组中第一个值的索引是0,最后一个的索引是(tempBuffer.length-1) = 3

现在循环:

for (int i = 0; i < tempBuffer.length; i++) {
  // do something
}

这将循环4次,i将在每次迭代时递增1。所以在第一次迭代中,我是0,在最后一次迭代中,i的值为3

wavPanel.addAudioByte(tempBuffer[i]);

这是最后一个'java魔术'。 tempBuffer [i]是数组中第i个'slot'的值,所以如果i0tempBuffer[0]10(根据我们的初始化)。此值将传递给方法wavPanel.addAudioByte(byte b)