1.如果Student类中有一个属性:schoolName,此属性需要被赋值为"传智播客-北京校区"; 并且不能修改。
2.Java中为我们提供了一种机制,可以避免每个对象都存储相同的变量值,这种机制就是:static(静态的、全局的)
3.static可以修饰:
1).成员变量:表示"静态变量(全局变量)",存储在"方法区--静态存储区",只有一个存储空间,被多个对象共享;
2).成员方法:表示"静态方法",存储在"方法区--静态存储区",只有一个存储空间,被多个对象共享;
4.被修饰为static的成员(成员变量,成员方法):
1).可以通过"对象名"访问;
2).可以通过"类名"访问;因为"静态成员"的存储空间,是在:第一次使用这个类时(可能还没有产出此类的对象),就会被立即分配存储空间。
5.静态变量和成员变量的区别:
1.所属不同
1).静态变量属于类,所以也称为为类变量
2).成员变量属于对象,所以也称为实例变量(对象变量)
2.内存中位置不同
1).静态变量存储于方法区的静态区
2).成员变量存储于堆内存
3.内存出现时间不同
1).静态变量随着类的加载而加载,随着类的消失而消失
2).成员变量随着对象的创建而存在,随着对象的消失而消失
4.调用不同
1).静态变量可以通过类名调用,也可以通过对象调用
2).成员变量只能通过对象名调用
static关键字的特点:
1.随着类的加载而加载:
2.优先于对象存在:
3.被类的所有对象共享:这也是我们判断是否使用静态关键字的条件
4.可以通过类名调用:
注意事项:
1.在静态方法中是没有this关键字的;因为:"静态方法"会先于对象存在,而this存储的是"对象"的引用
2.静态方法只能访问静态的成员变量和静态的成员方法;
1).静态的只能访问静态的;
2).普通成员方法:可以访问静态的,也可以访问普通的;
|
|