Java 具有相同名称的局部变量和全局变量

Java 具有相同名称的局部变量和全局变量,java,c++,c,Java,C++,C,我有两个变量,一个是函数中的局部变量,另一个是全局变量。这两个变量具有相同的名称。在编译期间,我没有错误。所以当代码运行时,我使用这个变量,选择哪一个 谢谢。局部变量将始终隐藏(阴影)全局变量 在Java中,您可以使用关键字this访问实例变量。这通常在构造函数中使用。例如: private String someVar; public ClassName(String someVar) { this.someVar = someVar; // this.someVar is the

我有两个变量,一个是函数中的局部变量,另一个是全局变量。这两个变量具有相同的名称。在编译期间,我没有错误。所以当代码运行时,我使用这个变量,选择哪一个


谢谢。

局部变量将始终隐藏(阴影)全局变量

在Java中,您可以使用关键字
this
访问实例变量。这通常在构造函数中使用。例如:

private String someVar;

public ClassName(String someVar) {
    this.someVar = someVar; // this.someVar is the instance variable
                            // someVar is the local variable
} 

局部变量将始终隐藏(阴影)全局变量

在Java中,您可以使用关键字
this
访问实例变量。这通常在构造函数中使用。例如:

private String someVar;

public ClassName(String someVar) {
    this.someVar = someVar; // this.someVar is the instance variable
                            // someVar is the local variable
} 

局部变量阴影覆盖全局变量。
i、 e,除非明确指定使用全局变量,否则函数中将使用具有相同名称的局部变量。

局部变量阴影覆盖全局变量。
i、 e,除非明确指定使用全局变量,否则函数中将使用同名的局部变量。

编译时使用哪种语言???(C、C++或java)为什么不试试看?C/C++有递归的范围,每个块创建一个新的范围,其标识符会使外部范围暗淡。你可以有
inta=0;void foo(intb){inta=1;/*阴影全局a*/{inta=2;intb=2;/*阴影外部a和b*/{inta=3;intb=3;/*阴影外部a和b*/}
在哪种语言的编译过程中???(C、C++或java)为什么不试试看?C/C++有递归的范围,每个块创建一个新的范围,其标识符会使外部范围暗淡。你可以有
inta=0;无效FO(int b){int a=1;/*阴影全局A*/{int=2;int b=2;/*阴影外部A和b*/{int=3;int b=3;/*阴影外部A和b*/}}}< /COD>。但是OP询问全局变量,所以示例(至少C++)看起来不相关。将访问局部变量还是全局变量。在C/C++中,将访问局部变量。在C++中,可以使用范围解析运算符(::)访问全局变量。但是OP询问全局变量,所以示例(至少C++)看起来是无关的。将访问局部变量还是全局变量。在C/C++中,将访问局部变量。在C++中,可以使用范围解析运算符(::)访问全局变量。