1.静态变量的定义???
定位位置:在类中,代码块和方法体之外。
定义语法:[修饰符] static 数据类型 静态变量名
切记:static不能用于修饰局部变量!!
2.静态变量的特点???
a)静态变量优先于对象存在,随着类的第一次加载就已经存在。
--> 成员变量从属于对象,静态变量从属类。
b)在一个类中,静态变量只有一份,为类和对象所共享。
--> 因为类只会记载一次,则一个类中的静态变量只会创建一次。
c)静态变量属于共享数据(为类和对象所共享),它的操作语法:通过“类名”或“对象”来操作。
语法一:类名.静态变量名 --> 建议
语法二:对象.静态变量名 --> 不建议
b)静态变量和成员变量都有默认值,并且默认值规则一模一样。
3.内存区域之方法区
方法区存放:类的信息、静态变量和静态方法等等。
注意事项:
a)“方法区”在堆内存中,也就是堆内存中包含了“方法区”。
b)当第一次使用某一个类时,那么首先会加载该类的信息进入“方法区”,并且一个类只会加载一次。
--> 类加载完成之后,会为该类中静态变量开辟存储空间。
4.对象开辟的存储空间
注意:创建对象的时候,只需为“成员变量”开辟存储空间。
[静态变量内存图] 我们在类中声明的静态变量存储在方法区中。
静态变量和成员变量的区别
a)定义语法区别
成员变量:[修饰符] 数据类型 变量名;
静态变量:[修饰符] static 数据类型 变量名;
b)存储位置区别
成员变量:存储在堆内存中,是对象的特有数据。
静态变量:存储在方法区中,是类和对象的共享数据。
c)生命周期区别
成员变量:随着对象的创建而“出生”,随着对象的销毁而“死亡”。
静态变量:随着类的加载而“出生”,随着程序的结束而“死亡”。
d)创建次数区别
成员变量:每创建一次对象,就会创建一次成员变量。
静态变量:因为一个类只会加载一次,因此静态变量只会创建一次。
e)调用语法区别
成员变量:必须通过对象来调用,语法:对象.成员变量名
静态变量:可以通过对象或类名来调用,语法:对象.静态变量名 或 类名.静态变量名
什么时候使用静态变量,什么时候使用成员变量???
当用于保存共享数据时,建议使用“静态变量”。 --> 慎用!
当用于保存特有数据时,必须使用“成员变量”。