日期:2014-05-20  浏览次数:20800 次

for字句中声明的变量,其作用范围为什么在for之外仍然有效?
C/C++语言的标准for声明当中的for(int i=0...)里面的i只在for当中起作用,for内的i不影响for外的i
为什么Java里面,for内的变量会和for之外的变量会有冲突? 这个是Java规范规定的么?
谢谢。

------解决方案--------------------
public void fun(){
int i = 0;
for(int i = 0;i < 10 ;i++){

}
}

这里,第一个i是在fun方法中定义的局部变量,for循环中如果再定义i,肯定是不行的了。
因为第一个i在整个fun方法都是有效的,for里再定义i的话,如何区分两者呢?
------解决方案--------------------
探讨

public void fun(){
int i = 0;
for(int i = 0;i < 10 ;i++){

}
}

这里,第一个i是在fun方法中定义的局部变量,for循环中如果再定义i,肯定是不行的了。
因为第一个i在整个fun方法都是有效的,for里再定义i的话,如何区分两者呢?

------解决方案--------------------
楼主理解不太准确,这种确实不行:
int i = 0;
for (int i=0;i<10;i++) {
...
}
原因是Java要避免出现双重语义,毕竟外面的 i 作用域包含了 for 之内,这种情况下是不行的。



但是可以这样:
for (int i=0;i<10;i++) {
...
}
int i = 0;
充分说明 for 中定义的 i 是局部的。