java中如何理解多个对象共享同一个静态成员变量?

正在学习这门语言,实在是理解不能,恳请指教,谢谢!

要理解这个问题首先要知道一点,就是java的静态成员变量是有一个独立的存储空间的。

假设一个类里面如果有一个静态变量s,那个这个类的多个实例所引用的s实际上是同一个。举个例子吧

class A{
    static int num = 1;
    private String name
    public String getName(String name){
        return name;
    }
    public void setName(String name){
    {
        this.name = name;
    }
    public void show(){
        System.out.println("name:"+name+" num:"+num);
    }
}
public class Test{
    public static void main(String[] args){
        A a = new A();
        a.setName("case A");
        a.num++;
        
        A b = new A();
        b.setName("case B);
        
        a.show();
        b.show();
    }
}

可以看到输出的num的值都是2

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-03-20
例 : static String A = “abc”;

test(){
String s1 = A;

String s2 = A;

}

so: 对象1 ,对象2 共享 静态变量 A。

楼上的解释 太啰嗦,把分给我把。谢谢。。
第2个回答  2019-04-10
静态变量就是用static修饰的变量,在这个类加载的时候就会自动声明,所以不管这个类里面有多少不同方法,都可以用这个变量。
第3个回答  2019-03-27
public class Demo {
public static void main(String[] args) {
new inner1().setDemo("456");
String demo1 = new inner1().getDemo();
String demo2 = new inner2().getDemo();
System.out.println(demo1);
System.out.println(demo2);
}
}
class inner1{
private static String demo = "123";
public static String getDemo() {
return demo;
}
public static void setDemo(String demo) {
inner1.demo = demo;
}
}
class inner2{
private static String demo;
public static String getDemo() {
return demo;
}
public static void setDemo(String demo) {
inner2.demo = demo;
}
}
结果是:
456
null
相似回答