我无处不在,开始考虑变量的作用域规则。我对编程并不陌生,这使我更加害怕,因为我不知道该问题的答案。

我记得在网络上阅读过有关变量作用域的内容,他们将在此示例中,其中将在{}之外声明一个变量,并且将更改{}块内的值以及何时打印在这两个不同的范围内,它们会得到不同的结果。

现在,在下面的代码中。

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

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


现在,我得到20,30,30作为输出。我对此很好。但是后来我在想互联网上哪些例子向我展示了不同的结果。所以我想我会在a内再次声明{}

码:

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

  if(true){
    int a;  // In java, this gives me error, saying duplicate local variable a.
    a=30;
    sysout(a);
  }
  sysout(a);
}


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

谢谢

最佳答案

应该以此为例:

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

08-07 10:58