遇到什么问题?
我们说,类是对象的抽象,是对象的模板,对象是类的实例.
我们现在需要使用一种方式来表示整个事物共同都有的状态和行为.
例如:人类的总数.
很显然,这是一个整个事物共同都有的状态,那我们要怎么表示呢?
非常简单,可以使用static关键字修饰.
static修饰符
static修饰符: 表示静态的,可修饰字段、方法、内部类,其修饰的成员属于类,而不是对象级别。
static修饰符作用
用来区别字段,方法,内部类,初始化代码块是属于对象还是属于类本身。
使用static修饰的成员(变量,方法,内部类),称之为类的成员(静态成员).
没有使用static修饰的成员变量,方法,内部类. 称之为实例成员(非静态成员).
static修饰符的特点
- 随着JVM的加载而加载.
当JVM把static成员所在的字节码加载进JVM的时候,static就已经存在于JVM中(方法区). - 优先于对象存在.
对象是我们通过new关键字创建出来的,而静态成员,在加载进JVM就已经存在了.
注意:static不能和this一起使用. static成员随着字节码加载进入JVM,就已经分配内存空间了,而此时并没有使用new去创建对象.static存在的时候,对象级别数据还不存在. - 被所有当前这个类的对象所共享.
- 调用静态成员,直接使用类名调用即可.
静态成员属于类型,而不属于某一个具体的对象.即使我们使用对象.静态成员
,其底层(看反编译文件)依然是类名.静态成员
static的使用
什么时候定义成static的字段和方法:如果这个状态/行为属于整个类,就直接使用static修饰.被所以对象所共享.
在开发中,往往把工具方法用static修饰,可以直接用类名调用