这个循环开始时的分号是什么意思?

时间:2014-07-09 00:09:42

标签: java android

当我遇到这个分号时,我正在阅读一个开源代码。我最初认为这是一个错误,但它不是。

在下面的for-loop的开括号之后,分号的功能是什么?

       if (nCount > 0){
            for(; nCount > 0; nCount--){
                if (mBitmaplist[nCount - 1] != null){
                    mBitmaplist[nCount - 1].recycle();
                    mBitmaplist[nCount - 1] = null;
                }
            }
        }

3 个答案:

答案 0 :(得分:5)

这意味着for循环的初始化器部分没有声明

同样如果你想跳过for循环的增量部分,它看起来像

for( ; nCount > 0; ){
  // some code
}

// which is like while loop

From JLS这是for循环的格式

BasicForStatement:
    for ( ForInitopt ; Expressionopt ; ForUpdateopt ) Statement

你可以看到所有3个都是可选的

答案 1 :(得分:2)

声明for (PART1; PART2; PART3) { BODY }的作用类似于:

PART1;

<<TOP OF LOOP>>
if PART2 is false then go to <<END OF LOOP>>;
do the BODY;
PART3;
go to <<TOP OF LOOP>>;

<<END OF LOOP>>

如果你说for (; PART2; PART3),那就意味着PART1什么都不做。 (对于PART3也是如此。如果你遗漏PART2,那么没有任何东西被测试,go to <<END OF LOOP>>永远不会发生。所以到达循环结束的唯一方法是使用breakreturn或其他内容。)

答案 2 :(得分:1)

希望这个例子可以帮助您更好地理解:

public static void main(String[] args) {
    int i = 0; // you normally put this before the first semicolon in next line
    for (;;) {
        if (i > 5) {
            break; // this "if" normally goes between the 2 semicolons
        }
        System.out.println("printing:" + i);
        i++; // this is what you put after the second semi-colon
    }
}

享受Java的乐趣并继续编码!