static作用
- 为特定数据类型或对象分配单一的内存空间
- 实现某个方法或属性与类而不是对象相关联
使用情况
-
static修饰成员变量(静态变量)
(1) 静态变量属于类,在内存中只有一个复制,只要静态变量所在的类被加载,这个静态变量就会被分配空间
(2) 而实例变量属于对象,只有对象被创建后,实例变量才会被分配空间,才能被使用 -
static修饰成员方法(静态方法)
(1) 静态方法是类的方法,不需要创建对象就可以被调用;而非静态方法是对象的方法,只有对象被创建出来后才可以被使用
(2) 静态方法不能使用this和super关键字,不能调用非静态方法,只能访问所属类的静态成员变量和方法
(3) 典型实例:单例模式!!! -
static修饰代码块(静态代码块)
(1) JVM在加载类时会执行静态代码块,若有多个静态代码块,JVM将会按顺序执行
(2) 静态代码块经常被用来初始化静态变量
(3) 静态代码块只会被执行一次 -
static修饰内部类(静态内部类)
(1) 静态内部类不依赖于外部类实例对象而被实例化,而普通内部类需要在外部类实例化后才能实例化
(2) 静态内部类不能与外部类有相同的名字
(3) 静态内部类不能访问外部类的普通成员变量,只能访问外部类中的静态成员和静态方法(包括私有类型)