关于Java普通代码块的疑问

两段Java代码如下:

1
2
3
4
5
6
7
8
public class Test {
public static void main(String[] args) {
{
int x = 19;
}
int x = 9;
}
}

1
2
3
4
5
6
7
8
public class Test {
public static void main(String[] args) {
int x = 19;
{
int x = 9;
}
}
}

问题:第一条程序没有报错,第二条程序报错了,这是为什么呢?

—————解决思路——————
作用域的问题啊。。。{}里是一个作用域,这个作用域结束以后的代码是访问不到作用域里面的局部变量的。但是作用域里面可以访问到作用域外面定义的变量。
第一段代码里面,定义int a = 9;的时候,之前的变量int a = 19.已经随着作用域的结束已经消失了。所以没问题。
而第二段代码,在作用域里面定义int a = 9;的时候,作用域外已经定义了int a = 19;这个时候作用域内部也是访问的到的,所以不能再次定义一个变量int a,否则就重复了。

本文为网友分享,不保证正确!若侵权请联系我们删除!

Jerky Lu wechat
欢迎加入微信公众号