类变量和类方法

类变量

也叫静态变量 / 静态属性,类中所有对象共享,随类加载而创建,任一对象操作的都是同一个变量。

  1. 访问修饰符 static 数据类型 变量名; // 推荐
  2. static 访问修饰符 数据类型 变量名;

推荐使用``访问。

总结

  • 所有对象需要共享同一变量,可以考虑使用类变量。
  • 类变量所有对象共享,实例变量(普通属性)是独享。
  • 使用static修饰,类名.类变量名;访问(推荐)。
  • 类加载时创建,没有对象也能使用。
  • 生命周期伴随类加载开始,类消亡销毁。

    类方法

    概念和声明同类方法。
    类方法将结构信息存储在方法区,无this参数。

  • 开发工具类时,可将方法做成静态的,方便调用。

    • Math``Arrays``Collection类。
  • 可以类名.方法名,也可以通过对象调用。
  • 不允许使用thissuper等与对象有关的关键字。
  • 静态方法只能访问静态成员;非静态不限。

    main 方法

  • 虚拟机调用且不必创建对象,故是public static

  • 该方法接受String类型的数组参数,数组中保存着执行 Java 命令是传递给所运行的类的参数。

image.png

代码块

又称初始化块,是类的一部分(可以理解为只有方法体的方法)。随类的加载或创建对象时隐式调用。

  1. static{
  2. ...;
  3. }; //static 可选, }结尾的分号可有可无

static可选,即普通代码块 / 静态代码块。
相当于另一种形式的构造器,优先级高于构造器,可用于初始化的操作。

  • 静态代码块随类的加载而执行且只执行一次,普通代码块每创建一个对象就执行(隐式)一次,使用静态成员,普通代码块不会执行。

    类何时加载!!!

  • 创建对象实例时(new)。

  • 创建子类对象实例,父类也会被加载。
  • 使用类的静态成员时。

    创建对象时,类的调用顺序

  1. 调用静态代码块和静态属性初始化(二者优先级相同,有多个则按照顺序依次调用)。
  2. 调用普通代码块和普通属性初始化(同上)
  3. 调用构造方法。

    创建子类对象,调用顺序(面试题)

  4. 父类的静态代码块和静态属性(同上)。

  5. 子类的静态代码块和静态属性(同上)。
  6. 父类的普通代码块和普通属性初始化(同上)。
  7. 父类的构造方法。
  8. 子类的普通代码块和普通属性初始化(同上)。
  9. 子类的构造方法。

    单例设计模式

    设计模式实在事件中总结和理论化后优选的代码结构、编程风格及解决问题的思考方式。
    单例设计模式是静态方法和属性的经典使用。

    是什么

    采取一定的方法保证在整个软件系统中,某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。
    两种方式:
  • 饿汉式
  • 懒汉式

    应用实例