这将会编译
class X
{
public static void main(String args[])
{
{
int a = 2;
}
{
int a = 3;
}
}
}
这不会
class X
{
public static void main(String args[])
{
int a = 2;
{
int a = 3;
}
}
}
我本来期望两者都能编译通过(也许这就是C语言的工作方式?)。为什么在一个块中声明与外部块中变量同名的变量是不可能的呢?
类A
定义中的int x = 10; // Shadows A.this.x if A declares x
,这是否意味着当我在A中打印x
,它仍将打印10
或者是0
(因为它实际上打印了0
)? - agent47shadowing
的含义。如果我没记错的话,它的意思是使用相同名称覆盖外部作用域变量。 - agent47