变量的范围规则

时间:2014-09-06 06:07:26

标签: java scope

突然之间,我开始考虑变量的范围规则。我不是编程的新手,这让我更害怕,我不知道这个问题的答案。

我记得读过关于网络上变量范围的变量,他们会有这个例子,他们会在{}之外声明一个变量,他们会改变{{1}内的值阻止,当它们在这两个不同的范围内打印时,它们会得到不同的结果。

现在,在下面的代码中。

{}

现在,我输出20,30,30。我很好。但后来我在想互联网上那些显示不同结果的例子。所以我想我会在main(){ int a=20; sysout(a); if(true){ a=30; sysout(a); } sysout(a); }

中再次声明a

代码:

{}

那么,我在网上看到的那个例子究竟是什么呢。如果有人能让我摆脱痛苦。

由于

2 个答案:

答案 0 :(得分:3)

这应该是一个例子:

int a=20;
main(){
  sysout(a);

  if(true){
    int a = 30;  // now this will shadow the class variable a
    sysout(a);
  }
  sysout(a);
}

现在输出应为:

20 30 20

答案 1 :(得分:0)

无法在本地范围内重新声明局部变量。在第二种情况下,您的变量a位于main方法的本地范围内,并且您再次尝试在if块的本地范围内声明它,这是不允许的。

你最好试试这个:

int a=20;   //Here a is outside the scope of main, so you can redeclare it.
main(){
  sysout(a);

  if(true){
    int a;  
    a=30;
    sysout(a);
  }
  sysout(a);
}