一、定义
1、静态方法
- 静态方法,是使用static关键字修饰的方法,又叫类方法。
2、非静态方法
- 非静态方法,是不含有static关键字修饰的普通方法,又称为实例方法。
二、区别
1、 调用对象
- 静态方法只可以调用静态方法,不可以调用非静态方法(普通方法)。
- 非静态方法既可以调用静态方法,也可以调用非静态方法(普通方法)。
2、引用变量
- 静态方法只可以引用类变量(即有static修饰的变量),不可以引用成员变量(即没有static修饰的变量)。
- 非静态方法既可以引用类变量,也可以引用成员变量。
3、super和this关键字
- 静态方法不可以使用super和this关键字。
- 非静态方法可以使用super和this关键字。
4、调用方法
- 静态方法可以直接调用,类名调用和对象调用(类名.方法名 / 对象名.方法名)。
- 非静态方法只能通过对象调用(对象名.方法名)。
5、生命周期
- 静态方法的生命周期跟相应的类一样长,静态方法和静态变量会随着类的定义而被分配和装载入内存中。一直到线程结束,静态属性和方法才会被销毁(也就是静态方法属于类)。
- 非静态方法的生命周期和类的实例化对象一样长,只有当类实例化了一个对象,非静态方法才会被创建,而当这个对象被销毁时,非静态方法也马上被销毁(也就是非静态方法属于对象)。
三、栗子
public class FJC {
static int i=45;
static void print(){
System.out.println("这是静态方法");
}
int j=45;
void println(){
System.out.println("这是非静态方法");
}
public static void main(String[] args) {
System.out.println(i);
FJC.print();
FJC fjc =new FJC();
System.out.println(fjc.j);
fjc.println();
}
}
45
这是静态方法
45
这是非静态方法
- 分析:
- 类方法(静态方法)可以直接通过类名调用,实例方法必需先实例化类,再初始化对象,然后通过类的实例对象才能调用。
- 静态方法的使用效率比非静态方法高,因为静态方法没有反复的分配、回收内存。
【END】初次学习若有不正之处请见谅,欢迎留言批评指出。