Java中Static的特点
Static的特点 :
1.Static可以修饰成员变量也可以修饰成员⽅法。
2.随着类的加载⽽加载,如图main⽅法是由static修饰的,如果不⽤static修饰,当class⽂件加载之后没有加载,那么虚拟机调⽤时就会不到main⽅法,那么就会报错如?图:
所以静态资源随着类的加载⽽加载。
3.优先于对象存在。(因为当class⽂件创建是static就已被加载,原因看上⼀条,⽽对象创建是由new关键词创建的,⽽当class ⽂件创建时没有创建对象。)
static修饰的变量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.调⽤不同
静态变量可以通过类名调⽤,也可以通过对象调⽤                        成员变量只能通过对象名调⽤

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。