static修饰成员变量
如果定义3个学生,且他们都属于同一个班,那么定义三次的成员变量会不会显得太繁琐了,那么这个时候我们就可以使用static把班级放到方法区,在Java中,被static修饰的成员,称之为静态成员,也可以称为类成员,其不属于某个具体的对象,是所有对象所共享的
class Student {
// 成员变量
public String name;
public int score;
// 由static修饰的静态成员变量,由类来控制访问
public static String classes = "一班";
}
- 不属于某个具体的对象,是类的属性,所有对象共享的,不存储在某个对象的空间中
- 既可以通过对象访问,也可以通过类名访问,但一般更推荐使用类名访问
- 类变量存储在方法区当中
- 生命周期伴随类的一生(即:随嘞的加载而创建,随类的卸载而销毁)
static修饰的对象一般使用类名去访问
static修饰成员方法
Java中,被static修饰的成员方法称为静态成员方法,是类的方法,不是某个对象所特有的。静态成员一般是通过静态方法来访问的。
静态方法特征
- 不属于某个具体的对象,是类方法
- 可以通过对象调用,也可以通过类名.静态方法名(…)方式调用,更推荐使用后者
- 不能在静态方法中访问任何非静态成员变量
static成员变量初始化
- 就地初始化
public static String classes = "一班";
- 静态代码块初始化
class Student {
public static String classes;
// 静态代码块
static {
classes = "一班";
}
}
注意事项
- 静态代码块不管生成多少个对象,其只会执行一次
- 静态成员变量是类的属性,因此是在JVM加载类时开辟空间并初始化的
- 如果一个类中包含多个静态代码块,在编译代码时,编译器会按照定义的先后次序依次合并
- 实例代码块只有在创建对象时才会执行