int a;
for (int j = 0; j<4; j++) {
a=3;
}
System.out.println(a);
这段代码是报错的,它会显示变量a未初始化。
int a=2;
for (int j = 0; j<4; j++) {
a=3;
}
System.out.println(a);
而这段代码确不会报错,且输出a=3
这两段代码的区别就是初始化与赋值位置的差别,第一段代码中a是定义在外部,而初始化是在方法内部,那当然出了括号,a就是未初始化了
而第二段代码a在开始时已经初始化为2,在方法内赋值3,出来输出就是3了。
本质上是作用域的适用范围