Daa*_*ape 26 java for-loop while-loop
今天有人告诉我return在Java中使用关键字.我编写了一个简单的for循环来验证数组中的某些东西.假设array是一个长度为n的数组,这是我的代码:
for (int i = 0; i < array.length; ++i) {
if (array[i] == valueToFind) {
return true;
}
}
return false;
Run Code Online (Sandbox Code Playgroud)
现在有人告诉我这不是很好的编程,因为我n在循环中使用语句,这会导致垃圾收集失灵.因此,更好的代码将是:
int i = 0;
while (i < array.length && array[i] != valueToFind) {
++i;
}
return i != array.length;
Run Code Online (Sandbox Code Playgroud)
问题是我无法正确地阐述为什么第一个for循环不是一个好习惯.有人可以给我一笔费用吗?
Jon*_*eet 60
现在有人告诉我这不是很好的编程,因为我在循环中使用return语句,这会导致垃圾收集失灵.
这是不正确的,并建议你应该对这个人的其他建议给予一定程度的怀疑.
"只有一个返回语句"(或者更一般地说,只有一个出口点)的口号对于您必须自己管理所有资源的语言非常重要 - 这样您就可以确保将所有清理代码放在一个地方.
它在Java中的用处要小得多:只要你知道你应该返回(以及返回值应该是什么),只需返回即可.这样,它更容易阅读 - 您不必接受任何其他方法来计算将要发生的其他事情(除了finally块).
现在有人告诉我这不是很好的编程,因为我在循环中使用return语句,这会导致垃圾收集失灵.
那是一堆垃圾.方法中的所有内容都将被清除,除非在类或其他地方有其它引用(封装很重要的原因).根据经验,通常最好只使用一个return语句,因为它更容易找出方法将退出的位置.
就个人而言,我会写:
Boolean retVal = false;
for(int i=0; i<array.length; ++i){
if(array[i]==valueToFind) {
retVal = true;
break; //Break immediately helps if you are looking through a big array
}
}
return retVal;
Run Code Online (Sandbox Code Playgroud)