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