hiwa doski Ответов: 1

Почему конечная переменная в расширенном цикле for не действует final?


public class EnhancedForTest {
  public static void main(String... args) {
    String[] strArr = {"A", "B", "C", "D"};

    for (final String s : strArr) {
      System.out.println(s);
    }
  }
}



Поскольку строка s является delcared как final, этот код не должен компилироваться. Тем не менее, это работает нормально. Почему?

Что я уже пробовал:

я ничего не мог сделать !

1 Ответов

Рейтинг:
5

Richard MacCutchan

Потому что переменная s является локальным для for цикл, поэтому он воссоздается на каждой итерации.


hiwa doski

это то же самое, когда вы объявляете переменную в нормальном цикле for, например -> for (int i=0; i<10;i++)

Richard MacCutchan

Да, переменная i существует только внутри for петля. Посмотрите правила области видимости Java для получения полной информации о времени жизни переменных и объектов.

hiwa doski

Ладно, спасибо.