Java 对于循环条件约定

Java 对于循环条件约定,java,for-loop,while-loop,conditional-statements,conventions,Java,For Loop,While Loop,Conditional Statements,Conventions,我最近讨论了Java中for循环中非计数器相关条件的使用: for(int i = 0; o.getC() < 10; i++) o.addC(i); for(int i=0;o.getC()

我最近讨论了Java中for循环中非计数器相关条件的使用:

for(int i = 0; o.getC() < 10; i++)
    o.addC(i);
for(int i=0;o.getC()<10;i++)
o、 addC(一);
有人知道这样的情况是否有“官方”惯例吗?在我看来,与等效的while循环相比,它更容易阅读,因为所有循环参数都在第一行:

int i = 0;
while(o.getC() < 10) {
    i++;
    o.addC(i);
}
inti=0;
while(o.getC()<10){
i++;
o、 addC(一);
}
甚至更糟的是:

int i = 0;
while(o.getC() < 10)
    o.addC(++i);
inti=0;
while(o.getC()<10)
o、 addC(++i);

for循环的一个好处是有一个快捷方式。因此,如果要执行数组中的所有项,只需执行以下操作:

(双倍号码:arrayName) 其中double是类型,number是您为每个元素指定的名称(实际上,您如何称呼它并不重要,在本例中,您将把每个值都称为“number”)。arrayName是指的数组的名称

如果您想到达每个元素/对象,这是最快的方法

那么:

for(int i = 0; i < MAX_ITERATIONS; i++)
{
    o.addC(i);
    if (o.getC() >= 10)
        return o; // or break
}
for(int i=0;i=10)
返回o;//或中断
}

如果addC没有真正做到您所期望的,这将防止出现无限循环。

for
在解决方案时,几乎在所有情况下都会使用循环。数组、列表、标准数据结构


另一方面,
while
通常用于流和无限长的迭代。

大多数开发人员希望
for
语句由三部分组成:

  • 变量的初始化
  • 基于变量的终止条件
  • 变量的增量
如果您更改代码以包含意外的内容,那么它将变得更难阅读,从而更难维护

此外,我认为
while
循环使您的意图更加清晰:在
o.getC()
小于10的时候做一些事情。这个“东西”恰好是:添加一个递增的数字


长话短说:对“非计数器相关条件”使用
while
循环。

非计数器相关条件是什么意思?这肯定与计数器有关。for循环最好是(IMO),因为1)
i
的作用域是循环;2) 您必须记住在每次迭代中递增(或明确不递增)
i
。这里的第二个和第三个选项没有特别的优点,可读性较差(尤其是
o.addC(++i);
)。与计数器相关的条件可能重复我指的是直接计算计数器变量的条件,如
i<10
您知道for的所有部分都是可选的吗<(;;)的code>相当于
而(true)
。因此,唯一的“约定”是,is需要是一个条件,但如果excludedIt被称为增强的for循环,则其计算结果为true。(我称之为foreach循环)。事实上,就速度而言,它不是“最快的”,因为它必须进行类型转换,并且仍然使用常规的for循环。啊,对不起,我自己也是一名新程序员。我试图尽我所能帮助你:p