A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如题,多个对象使用同一个成员变量时,该成员变量为何要用static修饰?

5 个回复

倒序浏览
非静态的成员变量是在创建对象时初始化的,就是每一个对象都有,而静态成员变量是在创建类时就有的,是属于公有的。比如一个饮水机,是公用的,人人都可以去接水,就是公共的,而杯子是每个对象(人)都有的。
回复 使用道具 举报
当多个对象共享同一份数据时,该成员修饰为静态。
比如:黑马的所有学生都有一个学校属性,这个学校就是黑马。被该学校所有的学生所共享。
此时,可以将学校属性设置为静态。所有该学校的学生都共同享有该数据。
回复 使用道具 举报
String country="China";

如果不用static修饰的country
每new一个对象,country都存储在对象中(堆内存中),而且每个对象都有一个对应的country,互不相关。

如果用static修饰
那么类一加载的时候,country就会存储在方法区中。
每new一个对象,就会把contry的内存地址赋给对象,所有对象共享这个country。

回复 使用道具 举报
用static修饰,就是将这个变量独立出来,存储在内存的静态方法区。所有对象功用这个数据。一般不建议用static关键字,因为被static修饰的变量随着类的加载而加载,生命周期过长,浪费系统资源。
回复 使用道具 举报
君嘘 发表于 2015-4-5 02:13
String country="China";

如果不用static修饰的country

感谢,手受教了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马