static 关键字
- 用来润饰共有的构造(属性 / 办法 / 代码块 / 外部类)
- 实现共有构造的对立管制
- 类中的常量也经常申明为 static
润饰属性
- 称为动态变量(动态属性或类变量)
- 不能润饰局部变量
- 属性按是否被 static 润饰分为动态属性和非动态属性(实例变量)
- 创立类的多个对象当前, 每个对象都独立的领有一套类中的实例变量
- 创立类的多个对象当前, 多个对象共享同一个动态变量, 实现一改全改
- 实例变量随着对象的创立而加载.
- 类变量随着类的加载而加载
- 类变量的加载早于对象的创立
- 能够通过 ” 类. 动态变量 ” 的形式进行调用(如 System.out,Math.PI)
- 类只加载一次, 所以动态变量也只加载一次
- 动态变量存在 <font size=3 color=red>办法区</font> 的动态域中.
- 动态变量能够间接通过 ” 类. 动态变量 ” 办法调用, 不须要创建对象
润饰办法
- 随着类的加载而加载, 能够通过 ” 类. 静态方法 ” 的形式进行调用.
- 因为生命周期, 非静态方法中既能够调用非动态的构造, 也能够调用动态的构造
- 静态方法中只能调用动态构造
- 动态的办法内不能应用 this/super 这两个须要基于以后对象的关键字(编译不通过)
- 动态构造在类中被调用时能够间接写构造名, 省去了 类名.
static 选定规范
-
选定类变量
- 属性能够被多个对象共享, 不会随着对象发生变化
-
选定静态方法
- 操作动态属性的办法通常也设为 static 的
- 工具类中的办法, 个别也申明为 static 的(如 Math/Arrays/Collections)