Static关键字
1.定义
方便在没有创建对象的情况下来进行调用(方法/变量),Java提供了static修饰符,用来修饰静态变量和方法。
2.特点
A.随着类的加载而加载
B.优先于对象存在
C.被类的所有对象共享
D.可以通过直接通过类名调用,也可以通过对象名调用
3.内存解释
用Static修饰的静态变量和方法,在类(class文件)被加载时,自动地在方法区中的“静态区”分配内存。
4.注意事项
A.在静态方法中是没有this关键字的
例如:以下代码会报错:无法从静态上下文中引用非静态变量num
class Teacher{
public int num=10;
public static void show(){
System.out.println(num);
System.out.println(this.num);
}
}
B.静态方法只能访问静态成员变量和静态成员方法,不能访问非静态变量和非静态方法
5.静态变量和成员变量的区别
A.所属不同
静态变量属于类,所以也称作类变量
成员变量属于对象,所以也成为实例变量(对象变量)
B.内存中的位置不同
静态变量存储于方法区的静态区
成员变量存储于堆内存
C.内存出现时间不同
静态变量随类的加载而出现,随类的消失而消失
成员变量随对象的创建而出现,随对象的消失而消失
D.调用不同
静态变量可以通过类名或者对象名调用
成员变量只能通过对象名来调用