如果名称与局部变量相同,如何访问全局变量?

Sam*_*hdi 0 java scope

我有一个全局变量和一个同名的局部变量.如何访问全局变量.

码:

String  s = "Global";
private void mx()
{
   String  s = "Local";
   lblB.setText(s); // i want global
}
Run Code Online (Sandbox Code Playgroud)

在c ++中使用:: operator如下:

::s
Run Code Online (Sandbox Code Playgroud)

Java中的是::运算符吗?

Jon*_*eet 8

这不是一个全局变量 - 它是一个实例变量.只需使用this:

String  s = "Local";
lblB.setText(this.s);
Run Code Online (Sandbox Code Playgroud)

(参见JLS第15.8.3节的含义this.)

对于静态变量(这是人们在谈论全局变量时通常所说的),您可以使用类名来限定变量名:

String  s = "Local";
lblB.setText(ClassDeclaringTheVariable.s);
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,我不希望有一个与实例或静态变量同名的局部变量,但是值得注意的例外是构造函数和setter,这两个参数的名称通常与实例变量相同. :

public class Person {
    private String name;

    public Person(String name) {
        this.name = name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}
Run Code Online (Sandbox Code Playgroud)