我们在编程时经常会遇到这样的需求:描述一类学生。在描述的过程中可能会碰到以下的两个问题:
问题1:所有的学生都是中国的,有n个学生就会有n份中国的 数据存内存中,这样会浪费内存,怎么办呢?
答:把“中国”这个数据移动到数据共享区中,共享这个数据给所有的Student对象使用即可。
问题2: 如何才能把这个数据移动到数据共享区中共享呢?
答:只需要使用static修饰该数据即可。
静态的成员变量只会在数据共享区中维护一份,而非静态成员变量的数据会在每个对象中都维护一份的。。
那么,都在什么时候和什么情况下用 static呢?
static用来修饰成员变量 :
如果有数据需要被共享给所有对象使用时,那么就可以使用static修饰。
静态成员变量的访问方式:
方式1:可以使用对象进行访问。
格式:对象.变量名。
方式二:可以使用类名进行访问。
格式:类名.变量名;
注意:
1.非静态的成员变量只能使用对象进行访问,不能使用类名进行访问。
2.千万不要为了方便访问数据而使用static修饰成员变量,只有成员变量的数据是真正需要被共享的时候才使用static修饰。否则会引起内存安全问题。
static修饰成员变量的应用场景:如果一个数据需要被所有对象共享使用的时候,这时候即可使用static修饰。