Java静态变量优点及示例讲解

如果将一个变量声明为static,它就是所谓的静态变量了。(更多教程请阅读码农之家)

  • 静态变量可以用于引用所有对象的公共属性(对于每个对象不是唯一的)。如:员工公司名称,学生所在的大学名称。

静态变量的优点:

  • 它能使程序存储器高效(即它节省内存)。

理解不使用静态变量的问题

class Student{  
     int rollno;  
     String name;  
     String college="ITS";  
}

假设在一所学校有500名学生,现在所有实例数据成员将在每次创建对象时获取内存。所有学生都有其唯一的注册ID:rollno和 name ,因此实例数据成员没有什么问题。college 指的是所有对象的共同属性。如果使它静态化(使用static关键字修饲),这个字段将只获得内存一次。

Java静态属性被共享给所有对象。

静态变量的示例

//Program of static variable  

class Student8 {
    int rollno;
    String name;
    static String college = "ITS";

    Student8(int r, String n) {
        rollno = r;
        name = n;
    }

    void display() {
        System.out.println(rollno + " " + name + " " + college);
    }

    public static void main(String args[]) {
        Student8 s1 = new Student8(111, "Karan");
        Student8 s2 = new Student8(222, "Aryan");

        s1.display();
        s2.display();
    }
}

上面代码执行结果如下 -

111 Karan ITS
222 Aryan ITS

创建对象示例图如下所示 -

 

不使用静态变量的计数器程序

在这个例子中,我们创建了一个名为count的实例变量用来统计创建对象的数目,它在构造函数中执行递增。 由于实例变量在创建对象时要获取内存,每个对象都将具有实例变量的副本,如果它被递增了,它也不会反映到其他对象中。所以每个对象在count变量中的值还是1

class Counter {
    int count = 0;// will get memory when instance is created

    Counter() {
        count++;
        System.out.println(count);
    }

    public static void main(String args[]) {

        Counter c1 = new Counter();
        Counter c2 = new Counter();
        Counter c3 = new Counter();

    }
}

上面代码执行结果如下 -

1
1
1

计数器静态变量的程序
如上所述,静态变量将只获取一次内存,如果任何对象更改静态变量的值,它将保留其值,所有实例均可访问同一变量值。

class Counter2 {
    static int count = 0;// will get memory only once and retain its value

    Counter2() {
        count++;
        System.out.println(count);
    }

    public static void main(String args[]) {

        Counter2 c1 = new Counter2();
        Counter2 c2 = new Counter2();
        Counter2 c3 = new Counter2();

    }
}

上面代码执行结果如下 -

1
2
3
posted @ 2021-12-15 18:33  small_123  阅读(421)  评论(0编辑  收藏  举报