在哪里声明Java中嵌套最深的循环的计数器?

在哪里声明Java中嵌套最深的循环的计数器?,java,for-loop,nested,counter,Java,For Loop,Nested,Counter,我是Java新手,正在为android构建一个小型学校项目。 如果我有一个嵌套的for循环: for (int i = 0; i <1000; ++i) { for (int j = 0; j <1000; ++j) { // .. this code will be executed a 1,000,000 times } } 在外部循环的每次迭代中声明j是否会影响性能? 如果是的话,有什么好方法来修复它? 这是学校的项目,所以我必须编写使用最小

我是Java新手,正在为android构建一个小型学校项目。 如果我有一个嵌套的for循环:

for (int i = 0; i <1000; ++i) {
    for (int j = 0; j <1000; ++j)  {
        // .. this code will be executed a 1,000,000 times
    }
}
在外部循环的每次迭代中声明j是否会影响性能? 如果是的话,有什么好方法来修复它? 这是学校的项目,所以我必须编写使用最小内存量的代码。
谢谢大家!

不,它没有,而且最好在尽可能有限的范围内声明变量-这会使可读性更清晰。它还确保不会在下一个循环开始时意外使用一个循环结束时的值


就我个人而言,我会警惕任何人强迫你使用绝对最小的内存量,而不是专注于可读性和重要的度量优化。

不,这不是,最好的做法是在尽可能有限的范围内声明变量-这使可读性更清晰。它还确保不会在下一个循环开始时意外使用一个循环结束时的值


就我个人而言,我会警惕任何人强迫你使用绝对最小的内存量,而不是专注于可读性和重要的度量优化。

分配整数会影响性能。然而,它是如此的小,以至于我不会费心去做不同的事情。众所周知,过早优化是万恶之源


编辑:在Jon的评论之后使用System.nanoTime对其进行了测试。无论你是否预先声明,都没有一点区别。因此,我错误地认为存在任何影响。

分配整数会影响性能。然而,它是如此的小,以至于我不会费心去做不同的事情。众所周知,过早优化是万恶之源


编辑:在Jon的评论之后使用System.nanoTime对其进行了测试。无论你是否预先声明,都没有一点区别。因此,我错误地认为存在任何影响。

声明嵌套变量对性能没有影响,事实上,建议将变量的使用限制在正确的范围内。这有助于避免简单的错误。

声明嵌套变量对性能没有影响,事实上建议这样做,以便将变量的使用限制在正确的范围内。这有助于避免简单的错误。

现在唯一的办法就是尝试不同的方法。我可以告诉您,这很可能不会成为性能问题,通常在它成为已知问题之前,您不会担心优化问题。

现在唯一的方法是尝试不同的方法。我可以告诉您,这很可能不会成为性能问题,通常在它成为已知问题之前,您不会担心优化问题。

不,它不会影响性能

您编写它的方式是最好的方式:始终声明一个变量,使其范围不超过必要的范围


并让编译器优化性能。

不,它不会影响性能

您编写它的方式是最好的方式:始终声明一个变量,使其范围不超过必要的范围


并让编译器优化性能。

让您的代码保持原样。编译器会处理这样的事情。将j从内部循环中拉出实际上可能会使事情变得更糟,从而使代码保持原样。编译器会处理这样的事情。将j从内循环中拉出来实际上可能会使事情变得糟糕。整数不会在每个外循环迭代中分配。当输入方法时,堆栈框架将为这两个变量分配足够的空间。我同意,如果有任何性能差异,可能仍然不值得担心,但重要的是要理解你的第一句话是错误的。适当编辑,我将删除否决票:@Jon我不知道!“干杯!”乔恩继续投反对票。这清楚地表明,第一句话是一种误解。现在我开始对学习JVM和编译器的内部结构感兴趣了。整数不是在每个外部循环迭代中分配的。当输入方法时,堆栈框架将为这两个变量分配足够的空间。我同意,如果有任何性能差异,可能仍然不值得担心,但重要的是要理解你的第一句话是错误的。适当编辑,我将删除否决票:@Jon我不知道!“干杯!”乔恩继续投反对票。这清楚地表明,第一句话是一种误解。现在我开始对学习JVM和编译器内部结构感兴趣。感谢您的快速回复!!正是我想知道的!谢谢你的快速回复!!正是我想知道的!