static关键字

静态变量

  • 静态变量也称为类变量,这个变量是属于类的,类的所有实例都共享静态变量,可以通过类名来访问他们。静态变量在内存中只存在一份。
  • 实例变量:每创建一个实例就产生一个实例变量,与实例同时产生,同时销毁。
/**
 * @author Pickle
 * @version V1.0
 * @date 2024/3/5 11:27
 */
public class demo {
    private static int x = 10;
    private int y;
    public static void main(String[] args) {
        demo.x = 20;
        int a = demo.x;
        int b = new demo().y;
        System.out.println(a + " " + b);
    }
}

静态方法

静态方法在类加载的时候就存在了,它不依赖于任何实例,所以静态方法必须有实现,不能是抽象方法。

只能访问静态字段或者静态方法,方法中不能含有this和super。

静态语句块

静态语句块在类初始化时运行一次。

import java.util.*;
import java.util.function.Consumer;

/**
 * @author Pickle
 * @version V1.0
 * @date 2024/3/5 11:27
 */
public class demo {
    static{
        System.out.println("Initialization");
    }

    public static void main(String[] args) {
        demo a = new demo();
        demo b = new demo();
        demo c = new demo();
        demo d = new demo();
    }
}

输出

Initialization

静态内部类

静态内部类不依赖于外部类的实例,静态内部类不能访问外部类的非静态的变量和方法。

初始化顺序

静态变量和静态语句块优先于实例变量和普通语句块,静态变量和静态语句块的初始化顺序取决于它们在代码中的顺序。

存在继承的情况下,初始化的顺序为

  • 父类(静态变量、静态语句块)
  • 子类(静态变量、静态语句块)
  • 父类(实例变量,普通语句块)
  • 父类(构造函数)
  • 子类(实例变量、普通语句块)
  • 子类(构造函数)
posted @ 2024-03-07 13:54  破忒头头  阅读(28)  评论(0)    收藏  举报