static
static 静态的 用于修饰成员变量和成员方法(没有被static修饰的变量同时也成为:实例变量。)
特点
- 随着类的加载而加载。
- 优先于对象存在。
- 被雷得所有对象共享。
- 可以通过类名调用。
作用(成员变量、成员方法、代码块、内部类)
1、成员变量
Java中可以通过static关键字修饰变量达到全局变量的效果。
static修饰的变量是静态变量,属于类。
2.成员方法
static修饰的方法为类方法,
3.代码块
Java在执行类时,会执行static代码快,static代码块常用于初始化静态变量,static代码块只会在类被加载时执行一次。
执行顺序:静态代码块>构造代码块>构造方法
private static String nameString="zzz";
static {
nameString="aaa";
}
public static void main(String[] args) {
System.out.println(nameString);
}
输出结果:aaa
4.内部类
static内部类可以不依赖外部类实例对象而被实例化,而内部类需要在外部类实例化后才能被实例化。
注意事项
- 静态的方法只能访问静态的成员
- 非静态的方法既能访问静态的成员变量和成员方法,又能访问非静态的成员变量和成员方法
- 静态方法中不能使用this关键字。因为静态优先于对象存在,所以静态方法不可以出现this。
- 局部变量不能被static修饰
静态变量和成员变量的区别
- 所属不同
静态变量属于类,所以也称为类变量。
成员变量属于对象,所以也称为实例变量(对象变量)。
- 内存中位置不同
静态变量存储于方法区的静态区。
成员变量存储于堆内存中。
- 内存出现的时间不同
静态变量随着类的加载而加载,随着类的消失而消失。
成员变量随着对象的创建而存在,随着对象的消失而消失。
- 调用不同
静态变量可以通过类名调用,也可以通过对象调用。
成员变量只能通过对象名调用。