提前创建变量以在循环中使用(?)

Aci*_*dic 3 java eclipse performance

这两者中哪一个更"有效":

for (int i = 0; i < 10; i++) {
    int x = i * 2;
}
Run Code Online (Sandbox Code Playgroud)

要么 -

int x;
for (int i = 0; i < 10; i++) {
    x = i * 2;
}
Run Code Online (Sandbox Code Playgroud)

(只是一个例子)

我知道它们本质上是不同的 - 所以请不要解决它们的使用差异.

如果两者都证明做同样的事情 - x多次创建变量是一种效率较低的方法,而不是仅创建一次并简单地重新分配它的值?

Rob*_*ner 5

不,在这种情况下,使用编译器的方式,没有性能差异.

从可读性的角度来看,我更喜欢第一种方法,但这是其他地方要讨论的内容.

但是,作为这个答案的奖励部分:

for (int x = 0; x < calculateUserCountFromDatabaseOrSomething(); x++) {
   //Do stuff
} 
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,这将是一个性能问题,因为将calculateUserCountFromDatabaseOrSomething()在循环的每次迭代时调用该方法.在编写软件时,这是必须要考虑的事情.