当前位置: 首页 > 面试题库 >

Java-for循环终止表达式之间的区别

刘胜泫
2023-03-14
问题内容

我很好奇:这两个循环实现之间在速度和性能上是否有所不同?假定 size() 方法返回处理一组元素的数组,集合或对象的长度(实际上是来自
XOM api)。

实施1:

int size = someArray.size();
for (int i = 0; i < size; i++) {
    // do stuff here
}

实施2:

for (int i = 0; i < someArray.size(); i++) {
    // do stuff here
}

问题答案:

从性能的角度来看,没有什么区别。这是因为可以优化循环,以便内联size()查找,从而导致很小的性能差异。

主要区别在于循环时大小是否改变。第一种情况将尝试迭代固定次数。在第二种情况下,迭代次数将取决于最终的size()。



 类似资料:
  • 问题内容: 据我了解,lambda表达式捕获值,而不是变量。例如,以下是编译时错误: 但是,当我尝试使用增强功能运行相同的逻辑时,一切工作正常: 为什么它对于增强型循环而不是常规的常规循环都能很好地工作,尽管增强型循环也像常规循环那样在内部递增变量。** 问题答案: Lambda表达式的工作方式类似于回调。一旦在代码中传递它们,它们就“存储”它们需要操作的任何外部值(或引用)(就像这些值在函数调用

  • 你好Stack overflow社区, 我的提示是:**“您将进行错误检查,以确保输入的小时在[0,23]范围内。继续询问用户,直到用户输入有效范围内的时间。 当我的程序有正确的整数输入(任何整数输入)时,它将正常工作。然而,如果我输入一个非整数,那么所有的东西都卡在一个无限循环中。 我做错了什么?

  • 问题内容: 我一直想知道,一般而言,在循环之前声明一个扔掉的变量(而不是在循环内部重复)是否会产生(性能)差异?Java中的一个例子(毫无意义): a)循环前声明: b)循环内的声明(反复): a或b哪个更好? 我怀疑重复变量声明(示例b)在理论上会产生更多开销,但是编译器足够聪明,因此无关紧要。示例b的优点是更紧凑,并将变量的范围限制在使用它的地方。尽管如此,我还是倾向于根据示例a进行编码。 问

  • 问题内容: 在我的Python应用程序中,我需要编写一个与以分号()终止的或循环匹配的正则表达式;。例如,它应与此匹配: …但是不是这个: 乍一看,这似乎很琐碎,直到你意识到左括号和右括号之间的文本可能包含其他括号,例如: 我正在使用python.re模块。现在,我的正则表达式如下所示(我留了我的评论,以便你可以更轻松地理解它): 这对于上述所有情况都非常适用,但是一旦你尝试使for循环的第三部分

  • 我试图设计一个购物车,读取美元数额,然后打印这些值回来。然而,我的时循环不会终止,我的数组列表存储了错误的值。 结果应该是这样的: 但这是我的输出: while 循环不会终止,而是返回到第一个提示:“请输入商品价格,或 -1 退出:” 程序不断将“-1”计为数组列表的一部分。“-1”值应该充当“否”并终止向 arrayList 添加更多元素,但在我的代码中,它被吸收到 arrayList 中。我尝

  • 问题内容: 两个python关键字之间是否有任何显着区别,如示例中所示 和 我应该知道吗? 问题答案: 是的,他们做的事情完全不同。 只是不执行任何操作,而继续进行下一个循环迭代。在您的示例中,如果您在:之后添加了另一条语句,则区别将变得显而易见。之后,就不会了。