java - 在 for 循环或外循环中返回

标签 java for-loop while-loop

今天,有人问我在 Java 中对 return 关键字的不当使用。我编写了一个简单的 for 循环来验证数组中是否存在某些内容。假设 array 是一个长度为 n 的数组,这是我的代码:

for (int i = 0; i < array.length; ++i) {
    if (array[i] == valueToFind) {
        return true;
    }
}
return false;

现在有人告诉我,这不是很好的编程,因为我在循环中使用 return 语句,这会导致垃圾收集出现故障。因此,更好的代码是:

int i = 0;
while (i < array.length && array[i] != valueToFind) {
    ++i;
}
return i != array.length;

问题是我无法正确解释为什么第一个 for 循环不是一个好习惯。谁能给我解释一下?

最佳答案

Now someone told me that this is not very good programming because I use the return statement inside a loop and this would cause garbage collection to malfunction.

这是不正确的,建议您应该对该人的其他建议持怀疑态度。

“只有一个返回语句”(或更一般地说,只有一个退出点)的口头禅在你必须自己管理所有资源的语言中很重要 - 这样你就可以确保你将所有清理代码放在一个地方。

它在 Java 中的用处要小得多:一旦你知道你应该返回(以及返回值应该是什么),就直接返回。这样阅读起来就更简单了——你不必考虑方法的任何其余部分来计算还会发生什么(除了 finally block )。

关于java - 在 for 循环或外循环中返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10800195/

相关文章:

java - 国际化域名 -> UnknownHostException

java - 需要一个方程来找到所需的速度

c - 在 C 中存储未知迭代次数的 while 循环的结果

c++ - 从 DataGridView 获取值到二维数组

c - 求时间复杂度 j+=sqrt(i))

c - fscanf 不会读取文本文件中的整数值

java - 与 while 循环相关的变量声明的位置

java - 运行 Eclipse SWT 应用程序后,它显示许多异常

Java:将数组列表分割成 block ,其中对象具有相同的属性值

arrays - 基于 array.count 生成 imageView - Swift