В следующем коде Я могу сделать объект 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 мы можем много раз создавать файловый объект с одним и тем же именем и одним и тем же конструктором, но во втором скрипте мы не можем этого сделать?
Переименуйте ссылочную переменную в f1.В первом случае ссылка будет переназначена. Файл f = новый файл ("D: /"); Файл f1 = новый файл ("C: /");




Ваш цикл эквивалентен следующему коду:
{ // 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:/");
Ваш код будет перезаписывать файл из предыдущей итерации. Вот почему ваш второй вариант работает.
Из-за переменной области видимости. В цикле
f2исчезает на каждой итерации. Вне цикла у вас не может быть двух переменных с одинаковым именем (ну, вы можете, но не в одной области, поэтому две локальные переменные с одинаковым именем не будут работать, как вы заметили).