Java中的static关键字(可用在)
- 变量
- 方法
- 类
- 匿名方法块
静态变量
static变量只依赖于类存在(通过类即可访问),只分配一份内存,不与任何实例关联在一起。 如以下代码所示,当price改变时,类和所有这个类实例化的实例的price全部改变。
public class Photo {
private static int price = 5;
private String content = "";
public Photo(int price, String content) {
this.price = price;
this.content = content;
}
public static void main(String[] args) {
System.out.println(Photo.price);
System.out.println("-------------------------------");
Photo photo = new Photo(20, "14寸");
System.out.println(photo.price);
System.out.println(Photo.price);
System.out.println("--------------------------------");
Photo photo1 = new Photo(25, "20寸");
System.out.println(photo1.price);
System.out.println(photo.price);
System.out.println(Photo.price);
}
}
执行结果
5
-------------------------------
20
20
--------------------------------
25
25
25
静态方法
- 静态方法无须用实例来引用,可以通过类名直接引用
- 静态方法中只能使用静态变量
- 静态方法禁止引用非静态方法
静态内部类(静态内部类是static修饰的内部类)
- 静态内部类实例时不需要外部类的实例
- 静态内部类可以定义静态成员和非静态成员,外部类之外的其他类要访问静态内部类的静态成员时要用完整的类名,访问非静态成员要通过静态内部类的实例访问。
静态代码块(static 修饰的代码块)
- 只有在类加载时才被调用,只执行一次。
- 执行顺序:static块>匿名块>构造函数