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

时间:2013-10-04 06:21:15

标签: java scope

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

代码:

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

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

::s

是Java中的::运算符吗?

4 个答案:

答案 0 :(得分:8)

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

String  s = "Local";
lblB.setText(this.s);

(有关this的含义,请参阅JLS section 15.8.3。)

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

String  s = "Local";
lblB.setText(ClassDeclaringTheVariable.s);

在大多数情况下,我不希望有一个与实例或静态变量同名的局部变量,但是值得注意的例外是构造函数和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;
    }
}

答案 1 :(得分:0)

您可以使用“this”关键字来执行此操作。

示例:

public class Test {
private String s = "GLOBAL";

public Test() {
    String s = "LOCAL";
    //System.out.println(this.s);
    //=> OR:
    System.out.println(s);
}


public static void main(String[] args) throws IOException {
    new Test();
}

}

答案 2 :(得分:0)

使用此关键字,您可以使用全局关键字,但在同一个类中。或者只是您可以使用classname.variable name声明全局变量static并访问它。

答案 3 :(得分:0)

是的你也可以使用 class _ name.Globalvariable_name

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="MyCtrl" ng-style=" has != 0 && {'cursor':'pointer','background-color':'blue'} || {'background-color':'blue'} ">
  kick
</div>

}