当我遇到这个分号时,我正在阅读一个开源代码。我最初认为这是一个错误,但它不是。
在下面的for-loop的开括号之后,分号的功能是什么?
if (nCount > 0){
for(; nCount > 0; nCount--){
if (mBitmaplist[nCount - 1] != null){
mBitmaplist[nCount - 1].recycle();
mBitmaplist[nCount - 1] = null;
}
}
}
答案 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>>
永远不会发生。所以到达循环结束的唯一方法是使用break
或return
或其他内容。)
答案 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的乐趣并继续编码!