1、概念
使用static 修饰成员变量,此时该成员变量又对象层级提升到类层级,被所有对象共享 该成员变量随着类的加载而准备就绪,与是否创建对象无关.
总之:类存在的时间比对象早
2、修饰的范围
static 修饰符表示静态的,可修饰字段、方法、代码块、内部类,其修饰的成员属于类,也就是说 static 修饰的资源属于类级别,而不是对象级别
3、静态属性
属性可以用类来调用,也可以用对象来调用,所有的实例共享这个静态属性。
public class Persion { private String name; private int age; private static String country = "china"; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public static String getCountry() { return country; } public static void setCountry(String country) { Persion.country = country; } public void print(){ System.out.println("name="+this.getName()+"age="+this.getAge()+"country="+Persion.getCountry()); } }
public class Test1 {
public static void main(String[] args) {
Persion persion = new Persion();
persion.setAge(23);
persion.setName("guanyu");
persion.setCountry("蜀国");
System.out.println("==================");
persion.print();
Persion persion1 = new Persion();
persion1.setAge(25);
persion1.setName("zhangfei");
System.out.println("==================");
persion1.print();
}
}
//这里可以看到country 这个属性是共享的,任何一个对象改了后所有的别的对象都改了
==================
name=guanyuage=23country=蜀国
==================
name=zhangfeiage=25country=蜀国
3、静态方法
静态方法只能通过类名来调用
4、静态代码块
后面跟着一段代码,这段代码只会初始化一次,且在类被第一次装载时