static关键字,可以用来修饰属性、方法、代码块和内部类
static修饰属性(类变量)
- 类变量存在于静态域中,由类创建的所有的对象,都共用这一属性。
- 当其中一个对象对此属性进行修改,会导致其他对象对此属性的一个调用。
- 类变量随着类的加载而加载,而且独一份。
- 静态的变量可以直接通过“类.类变量”的形式来调用。
- 类变量的加载要早于对象。所以当创建了对象以后,可以使用“对象.类变量”的形式,但是不能使用“类.实例变量”的形式。
public class TestStatic {
public static void main(String[] args) {
SportMan s1 = new SportMan(20, "吴");
s1.nation = "China";
System.out.println(s1);
System.out.println(SportMan.nation);//可以直接用此形式调用类变量
}
}
class SportMan {
//实例变量
int age;
String name;
//类变量
static String nation;
public SportMan(int age, String name) {
super();
this.age = age;
this.name = name;
}
@Override
public String toString() {
return "SportMan [age=" + age + ", name=" + name + ", nation=" + nation + "]";
}
}
static修饰方法
- 随着类的加载而加载,在类中也是独一份。
- 可以直接通过“类.类方法”的方式调用。
- 静态方法内部可以调用静态的属性或方法,不能调用非静态的方法或属性。
- 非静态方法能调用静态的方法或属性。
- 类方法内部不能使用this或super关键字。