为什么在类的不同方法中对循环控制变量使用相同的字段是个坏主意?

dar*_*hna 2 java scope for-loop

来自Java类简介的练习决赛的问题:

为什么在类的不同方法中对循环控制变量使用相同的字段是个坏主意?

答:因为如果从循环体调用方法,它可能会重置用于控制该循环的变量的值

B.因为在不同方法中对变量使用相同的名称不是一种好的风格

C.因为它浪费了记忆

D.因为局部变量可以保存在CPU寄存器中,并且循环运行得更快

答案是A,但我首先并不是真正理解这个问题.循环中的变量如何影响第二种方法?那么在常规方法调用中,这不会适用于循环外部吗?如果有人可以在代码中提供一个很棒的例子.

Joh*_*ica 5

通过"相同字段",我假设问题意味着完全相同的变量,而不是具有相同名称的两个不同变量.像这样:

class X {
    int i;

    void foo() {
        for (i = 0; i < 10; ++i) {
            bar();
        }
    }

    void bar() {
        for (i = 0; i < 20; ++i) {
            System.out.println("foobar");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

像这样的代码打算总共循环200次,但是i在两种方法中重用会导致一个循环干扰另一个循环.

公平地说,这个问题措辞不是很好.代码比散文更清晰.

  • 这就是我认为这也意味着什么.但作为一名十年的Java专业人士,我从来没有听说有人试图这样做. (2认同)