静态方法&非静态方法
方法整理上主要分为三种:
- 构造方法
- 非静态方法(实例方法/普通方法):不含有static关键字修饰的普通方法,又称为实例方法,成员方法。
- 静态方法(类方法):由static关键字修饰的方法,又称类方法、属于类,不属于对象,在实例化之前就可以通过【类名.方法名】静态调用。
静态方法和非静态方法的区别
1. 调用对象、引用变量不同
- 在静态方法中:
- 可以调用静态方法;
- 不能调用非静态方法;
- 可以引用类变量(即,static修饰的变量);
- 不可以引用成员变量(即,不是static修饰的变量);
- 不能使用super和this关键字。
- 在非静态方法/普通方法中:
- 可以调用普通方法;
- 可以调用静态方法;
- 可以应用类变量和成员变量;
- 可以使用super和this关键字。
2.调用方法不同
- 静态方法:可以直接调用,类名调用和对象调用。类名.方法名/对象.方法名
- 普通方法:只能通过对象调用。对象.方法名
3.声明周期不同
- 静态方法:与相应的类同样长,静态方法和静态变量会随着类的定义而被分配和装载入内存中,一直到线程结束,静态方法和变量才会被销毁;
- 普通方法:与类的实例化对象的生命周期相同,只有当类实例化了一个对象,非静态方法才会被创建,而当这个对象被销毁时,非静态方法也马上被销毁。