static关键字
- 用来修饰共有的结构(属性/方法/代码块/内部类)
- 实现共有结构的统一控制
- 类中的常量也常常声明为static
修饰属性
- 称为静态变量(静态属性或类变量)
- 不能修饰局部变量
- 属性按是否被static修饰分为静态属性和非静态属性(实例变量)
- 创建类的多个对象以后,每个对象都独立的拥有一套类中的实例变量
- 创建类的多个对象以后,多个对象共享同一个静态变量,实现一改全改
- 实例变量随着对象的创建而加载.
- 类变量随着类的加载而加载
- 类变量的加载早于对象的创建
- 可以通过"类.静态变量"的方式进行调用(如System.out,Math.PI)
- 类只加载一次,所以静态变量也只加载一次
- 静态变量存在<font size=3 color=red>方法区</font>的静态域中.
- 静态变量可以直接通过"类.静态变量"方法调用,不需要创建对象
修饰方法
- 随着类的加载而加载,可以通过"类.静态方法"的方式进行调用.
- 因为生命周期,非静态方法中既可以调用非静态的结构,也可以调用静态的结构
- 静态方法中只能调用静态结构
- 静态的方法内不能使用this/super这两个需要基于当前对象的关键字(编译不通过)
- 静态结构在类中被调用时可以直接写结构名,省去了类名.
static选定标准
选定类变量
- 属性可以被多个对象共享,不会随着对象发生变化
选定静态方法
- 操作静态属性的方法通常也设为static的
- 工具类中的方法,一般也声明为static的(如Math/Arrays/Collections)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。