第一段代码:
public class HelloWorld {
public static void main(String[] args) {
int i = 0; //这里定义了i
for(int i = 0 ; i < 10 ; i++) { // 这里也有一个i,系统提示,命名重复,请修改
System.out.println(i);
}
}
}
第一段代码有两个i,一个在for外面,一个在for里面,系统提示命名冲突
第二段代码:
public class HelloWorld {
public static void main(String[] args) {
for(int i = 0; i < 10 ; i++) {
System.out.println(i);
}
for(int i = 0; i < 10 ; i++) {
System.out.println(i);
}
}
}
第二段代码有两个并列的for循环,都有一个变量i,但是两个不会命名冲突。
我有两个问题:
第一,第一段代码和第二段代码当中,两个i到底哪个是局部变量,哪个是全局变量?
第二,为什么第一段代码i名字冲突,第二段代码i名字不冲突?
这个问题是变量的作用域问题
第一端代码中
int i = 0;
的作用域是整个main
函数中,而for
循环在main
函数之中所以系统提示命名冲突;第二段代码中的两个i的作用域分别在两个
for
循环之中,所以不冲突;