static关键字


1.static关键字

static表示“静态”的意思,可以用来修饰成员变量和成员方法。static的主要作用在于创建独立于具体对象的域变量或者方法,即不用依赖于对象,使用类就可以调用

简单理解

被static关键字修饰的方法或者变量不需要依赖对象来进行访问,只要类被加载,就可以通过类名去进行访问。并且不会因为对象的多次创建而在内存中创建多份数据。

image-20211107193538497

重点:

  1. 静态成员在类加载的时候加载并初始化。
  2. 无论一个类存在多少个对象,静态的属性,永远在内存中只有一份(可以理解为所有对象共用)。
  3. 在访问时,静态不能访问非静态,非静态可以访问静态。
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);
	}
	
}

运行结果:image-20211107200506939