静态 Static

说明
静态属于类;在其他类中使用时,采用类名.静态直接访问;当前类中使用可以省略类名
静态为所有实例共享
不需要实例化即可使用
主要应用
静态属性
静态方法
静态块
静态包
[]静态属性 vs 静态方法
package base.class2;

public class Static {
    public static int age;
    public int unit;

    public static void run() {
        System.out.println("static run");
    }

    public void walk() {
        System.out.println("walk");
    }

    public static void main(String[] args) {
        Static sta = new Static();
        System.out.println(age);
        System.out.println(Static.age);
        System.out.println(sta.unit);
        run();
        Static.run();
        sta.walk();
    }
}
[]静态代码块
package base.class2;

public class Block {
    static {
        System.out.println("static block");
    }

    {
        System.out.println("normal block");
    }

    public Block() {
        System.out.println("constructor block");
    }

    public static void main(String[] args) {
        Block block0 = new Block();
        Block block1 = new Block();
    }
}
执行结果:
1.先执行静态代码块
2.然后执行普通代码块/匿名代码块
3.最后执行构造函数
每次new一个对象时,都会执行普通代码块和构造函数,但静态代码块只执行一次
static block
normal block
constructor block
normal block
constructor block
[]静态包
传统方法
package base.class2;

public class Pack {
    public static void main(String[] args) {
        System.out.println(Math.random());
    }
}
改进方法:导入静态包,可以直接使用
package base.class2;

import static java.lang.Math.random;

public class Pack {
    public static void main(String[] args) {
        System.out.println(random());
    }
}