static关键字

  • 用来润饰共有的构造(属性/办法/代码块/外部类)
  • 实现共有构造的对立管制
  • 类中的常量也经常申明为static

润饰属性

  • 称为动态变量(动态属性或类变量)
  • 不能润饰局部变量
  • 属性按是否被static润饰分为动态属性和非动态属性(实例变量)
  • 创立类的多个对象当前,每个对象都独立的领有一套类中的实例变量
  • 创立类的多个对象当前,多个对象共享同一个动态变量,实现一改全改
  • 实例变量随着对象的创立而加载.
  • 类变量随着类的加载而加载
  • 类变量的加载早于对象的创立
  • 能够通过"类.动态变量"的形式进行调用(如System.out,Math.PI)
  • 类只加载一次,所以动态变量也只加载一次
  • 动态变量存在<font size=3 color=red>办法区</font>的动态域中.
  • 动态变量能够间接通过"类.动态变量"办法调用,不须要创建对象

润饰办法

  • 随着类的加载而加载,能够通过"类.静态方法"的形式进行调用.
  • 因为生命周期,非静态方法中既能够调用非动态的构造,也能够调用动态的构造
  • 静态方法中只能调用动态构造
  • 动态的办法内不能应用this/super这两个须要基于以后对象的关键字(编译不通过)
  • 动态构造在类中被调用时能够间接写构造名,省去了类名.

static选定规范

  • 选定类变量

    • 属性能够被多个对象共享,不会随着对象发生变化
  • 选定静态方法

    • 操作动态属性的办法通常也设为static的
    • 工具类中的办法,个别也申明为static的(如Math/Arrays/Collections)