更新 java 中的静态变量

Update static variables in java

我有一个 class 静态变量为:

 class Commons { 
public static String DOMAIN ="www.mydomain.com"; 
public static String PRIVATE_AREA = DOMAIN + "/area.php";
} 

如果我尝试在运行时从 Android Activity(或另一个 java class)更改 DOMAIN,则 DOMAIN 变量会更改但 PRIVATE_AREA 不要改变。为什么?

这是因为静态变量只在执行开始时初始化一次。

查看更多信息:http://www.guru99.com/java-static-variable-methods.html

这是因为一旦 class 被加载(仅出现一次)到 JVM 中,静态字段的分配就会发生。当 DOMAIN 变量改变时,PRIVATE_AREA 变量不会更新。

public class Test {
    public static String name = "Andrew";
    public static String fullName = name + " Barnes";
    public static void main(String[] args){
        name = "Barry";
        System.out.println(name); // Barry
        System.out.println(fullName); // Andrew Barnes
    }
}

我建议你使用下面的结构。

public class Test {
    private static String name = "Andrew";
    public static String fullName = name + " Barnes";

    public static void setName(String nameArg) {
        name = nameArg;
        fullName = nameArg + " Barnes";
    }

}

Test2.java

 public class Test2 {

    public static void main(String[] args){
        System.out.println(Test.fullName); // Andrew Barnes
        Test.setName("Barry");
        System.out.println(Test.fullName); // Barry Barnes
    }
}

PRIVATE_AREA 没有改变,因为它是在声明时间设置的。当您更改 DOMAIN 时,它对 PRIVATE_AREA 没有影响。 也许最好使用 setter(...) 和 getter() 方法和局部变量。在获得 PRIVATE_AREA 时,您再次创建重新运行值。

变量的赋值发生在 class 的加载时间,这就是为什么在那之后如果你改变一个静态变量的值,它不会反映它被分配给另一个变量的地方