Java如何创建静态变量?

类变量或static变量是用static修饰符声明的变量。一个给定的类每个static变量只有一个副本,而不管该类被实例化了多少次。

如果static更改了变量的值,则新值在类的所有实例中均可用。在final可以添加关键字来表示的数值static变量永远不会改变。

如果尝试为final变量分配新值,则会出现编译错误。

package org.nhooo.example.fundamental;

public class StaticDemo {
    // 静态变量
    static int x = 12;

    // 静态变量 with final value that never change
    final static int Y = 20;

    // 非静态变量
    int z;

    public static void main(String[] args) {
        StaticDemo sd0 = new StaticDemo();

        System.out.println("x before update = " + StaticDemo.x);
        System.out.println("y= " + StaticDemo.Y);

        sd0.z = StaticDemo.x + StaticDemo.Y;
        System.out.println("z= " + sd0.z);

        StaticDemo.x = 15;
        System.out.println("x after update = " + StaticDemo.x);

        StaticDemo sd1 = new StaticDemo();
        StaticDemo sd2 = new StaticDemo();
        StaticDemo.x = 20;

        System.out.println("StaticDemo.x = " + StaticDemo.x);
        System.out.println("sd0 = " + sd0.getX());
        System.out.println("sd1 = " + sd1.getX());
        System.out.println("sd2 = " + sd2.getX());

        //
        // 尝试将值分配给最终变量,这将导致
        // 编译时间错误
        //
        // StaticDemo.Y = 30;
    }

    public int getX() {
        return StaticDemo.x;
    }
}

这是程序打印的输出:

x before update = 12
y= 20
z= 32
x after update = 15
StaticDemo.x = 20
sd0 = 20
sd1 = 20
sd2 = 20