Static的特点 :
1.Static可以修饰成员变量也可以修饰成员方法。
2.随着类的加载而加载,如图main方法是由static修饰的,如果不用static修饰,当class文件加载之后没有加载,那么虚拟机调用时就会找不到main方法,那么就会报错如?图:

![]()
所以静态资源随着类的加载而加载。
3.优先于对象存在。(因为当class文件创建是static就已被加载,原因看上一条,而对象创建是由new关键词创建的,而当class文件创建时没有创建对象。)
4.被类所有的对象共享。
这个特点告诉我们什么时候使用静态static 。如果某个成员变量是被所有对象共享的,那么他就应该定义为静态的。
举例:
饮水机(用静态修饰),因为不可能每个对象都创建一个饮水机方法,所以用静态修饰。
水杯(不能用静态变量修饰),因为不可能每个对象都使用同一个水杯变量,所以不能用静态修饰。
5.可以通过类名调用
其实也可以通过对象名调用。
推荐使用类名调用。(因为静态修饰的内容我们一般称其为:与类相关的,类成员)
示例代码:
class Num{
static int a=10;
int b=20;
}
public class Static_method {
public void main(String[] args) {
// TODO Auto-generated method stub
Num n=new Num();
System.out.println(n.a);
System.out.println(n.b);
System.out.println(Num.a);
}
}
输出结果:
![]()
static的内存图解:

static注意事项:
1.在静态方法中没有this关键字
因为静态是随着类的加载而加载,this是随着对象的创建而存在,
静态比对象先存在。
2.静态方法只能访问静态的成员变量和静态的成员方法
静态方法:
成员变量:只能访问静态变量
成员方法:只能访问静态成员方法。
非静态方法:
成员变量:可以是静态的,也可以是非静态的;
成员方法:可以是静态成员方法,也可以是非静态成员方法;
简单记:
静态只能对静态。
总结:
静态变量和成员变量的区别:
1.所属不同
静态变量属于类,所以也称为类变量
成员变量属于对象,所以也被称为实例变量(成员便量)。
2 .内存中位置不同
静态变量存储于方法区的静态区。
成员变量存储与堆内存
3.内存出现时间不同
静态变量随着类的加载而加载,随着类的小时而消失
成员变量随着随着对象的创建而创建,随着对象的消失而消失
4.调用不同
静态变量可以通过类名调用,也可以通过对象调用
成员变量只能通过对象名调用
本文深入解析Java中Static关键字的五大特点,包括修饰成员变量和方法、随类加载而加载、优先于对象存在、被所有对象共享及可通过类名调用等。同时,对比静态变量与成员变量的区别,帮助读者理解何时应使用静态static。
9186

被折叠的 条评论
为什么被折叠?



