static关键字
1.static关键字
static表示“静态”的意思,可以用来修饰成员变量和成员方法。static的主要作用在于创建独立于具体对象的域变量或者方法,即不用依赖于对象,使用类就可以调用。
简单理解:
被static关键字修饰的方法或者变量不需要依赖对象来进行访问,只要类被加载,就可以通过类名去进行访问。并且不会因为对象的多次创建而在内存中创建多份数据。
重点:
- 静态成员在类加载的时候加载并初始化。
- 无论一个类存在多少个对象,静态的属性,永远在内存中只有一份(可以理解为所有对象共用)。
- 在访问时,静态不能访问非静态,非静态可以访问静态。
public class Demo3 {
public static void main(String[] args) {
Person3.show();
System.out.println();
Person3 p = new Person3("孟祥宽");
p.showPerson();
Person3 p2 = new Person3("mxk");
p2.showPerson();
}
}
class Person3 {
private static int index;
private String name;
public Person3() {}
public Person3(String name) {
index ++;
this.setName(name);
}
public static int getIndex() {
return index;
}
public static void setIndex(int index) {
Person3.index = index;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// 静态方法
public static void show() {
System.out.print(index + ".用户:");
// this.getName(); -> static在类加载的时候加载,可能没有创建对象,所以不能用this.
// getName(); -> 同理,普通方法依赖于对象,静态方法里不能调用非静态方法.
}
@SuppressWarnings("static-access")
public void showPerson() {
this.show();
System.out.println(this.name);
}
}
运行结果: