更新 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 的加载时间,这就是为什么在那之后如果你改变一个静态变量的值,它不会反映它被分配给另一个变量的地方
我有一个 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 的加载时间,这就是为什么在那之后如果你改变一个静态变量的值,它不会反映它被分配给另一个变量的地方