【发布时间】:2017-02-25 07:36:34
【问题描述】:
在我的 Java 课程中,我们刚刚了解了作用域。所谓的博学,我的意思是它被简单地提到过一次,再也没有被提起过。发布了一些问题,我无法理解两段代码之间的区别。第一个:
public class Shadow3 {
private static int i = 99;
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
System.out.println(i);
}
}
第二个:
public class Shadow4 {
private int i;
public void doSomething(int n) {
for (int i = 0; i < n; i++) {
System.out.println(i);
}
}
public static void main(String[] args) {
new Shadow4().doSomething(9);
}
}
我明白第一个的错误不是变量声明了两次,但是我不明白为什么Shadow类中声明的变量的范围没有到达main方法导致重复错误.我也明白为什么在第一段代码中,变量 i 不能在 for 循环中使用时声明为私有静态,因为 for 循环中 i 的值是临时的,但我不明白怎么做第二段代码中的变量 i 是有效的,因为它仍然是私有的。
【问题讨论】:
-
我认为这两个代码块都没有错误。为什么你认为他们这样做? For 循环确实有临时变量,仅限于它们。你跑过这些代码吗?你注意到了什么?
-
哇,你完全正确。我删除并重新制作了我的课程并再次尝试,它成功了!我一定错过了我的代码中的其他错误。谢谢:)
标签: java variables scope static private