更新java

时间:2015-06-01 11:59:26

标签: java android static-variables

我有一个静态变量的类:

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

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

4 个答案:

答案 0 :(得分:6)

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

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
    }
}

答案 1 :(得分:2)

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

详情请见:http://www.guru99.com/java-static-variable-methods.html

答案 2 :(得分:0)

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

答案 3 :(得分:0)

变量的赋值发生在类的加载时间,这就是为什么在此之后如果更改一个静态变量的值,它将不会反映它被分配给另一个变量的位置