Почему я могу сделать несколько файловых объектов в цикле for в java

В следующем коде Я могу сделать объект f 4 раза без ошибок

for(i=0;i<3;i++){
   File f2=new File("D:/"); 
}

но Java принимает ошибку для этого кода для второй строки потому что однажды мы сделали объект f

File f = new File("D:/");
File f = new File("C:/");

почему в lopp мы можем много раз создавать файловый объект с одним и тем же именем и одним и тем же конструктором, но во втором скрипте мы не можем этого сделать?

Из-за переменной области видимости. В цикле f2 исчезает на каждой итерации. Вне цикла у вас не может быть двух переменных с одинаковым именем (ну, вы можете, но не в одной области, поэтому две локальные переменные с одинаковым именем не будут работать, как вы заметили).

Kayaman 21.08.2018 10:04

Переименуйте ссылочную переменную в f1.В первом случае ссылка будет переназначена. Файл f = новый файл ("D: /"); Файл f1 = новый файл ("C: /");

Dinesh 21.08.2018 10:08
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
72
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Ваш цикл эквивалентен следующему коду:

{ // block 1 start
    File f2 = new File("D:/");
} // block 1 end

{ // block 2 start
    File f2 = new File("D:/");
} // block 2 end

{ // block 3 start
    File f2 = new File("D:/");
} // block 3 end

Каждая переменная f2 ограничена своим блоком и существует только внутри него. Однако если вы попытаетесь объявить одну переменную два раза в одном блоке, это не удастся.

Только не объявляйте переменную во второй раз. просто установите его: f2 = new File("D:/");

Robert 21.08.2018 11:06

Ваш код будет перезаписывать файл из предыдущей итерации. Вот почему ваш второй вариант работает.

Другие вопросы по теме