Java中变量的作用域
各种入党,实验与考试,适逢端午假期,潦草做些总结。
在尝试完成老师所给的任务lab1时遇到了一个问题。
package turtle;
import java.util.List;
import java.util.Set;
import java.util.ArrayList;
import java.util.Stack;
import java.util.HashSet;
Point P0 = new Point(0, 1000);
Point P1 = new Point(P0.x() - 1000, P0.y() + 1);
// System.out.println("ppp");
for (Point P : myset0) {
// System.out.println(P.x() + "***" + P.y());
Point P1 = P;
if (P0.y() > P1.y()) {
P0 = P1;
}
}
按照对C语言中变量的作用域的理解,循环中使用P1应该不影响编译器正确解读要做的工作,但是还是报错了。这意味着java的语法检查要比C更加苛刻,对于块级作用域不接受以上的行为。
但两者在块级作用域的规则仍然是相似的,例子如下
{
int variable1 = 12;
/* only x available */
{
int variable2 = 96;
/* both x & q available */
}
/* only x available */
/* q “out of scope” */
}