static:权限修饰符,意思为静态的
一.static可以用来修饰成员变量
静态成员变量在内存中只维护了一份数据,非静态成员变量在创建每个对象时都维护了一份数据。
如果类里面有数据需要共享给所用对象使用,可以用static来修饰
访问方式:
1.通过对象进行访问 对象.属性名
2.通过类进行访问 类名.属性名
注意问题:
1.非静态成员变量只能使用对象进行访问,不能使用类名进行访问
2.不要为了访问方便就在成员变量前加static,只有这个属性需要共享给所有对象使用时才加static
二.static可以用来修饰函数
访问方式:
1.通过对象进行访问 对象.方法名();
2.通过类进行访问 类名.方法名();
注意问题:
1.静态函数可以通过类名调用,非静态函数不能
2.静态函数可以访问静态成员,不能访问非静态成员
3.非静态函数可以访问静态和非静态成员变量
4.静态函数不能出现this和super关键字
因为静态函数是在对象之前存在的,而this关键字代表所属函数调用者对象,发生冲突
静态数据的声明周期:静态的成员变量数据是优先于对象存在的
静态成员变量和非静态成员变量的区别:
1.作用上的区别
静态成员变量是共享一份数据给所有对象使用
非静态成员变量是描述一类事物的公共属性
2.数量与存储位置上的区别
静态成员变量存储在方法区,只存在一份数据
非静态成员变量存储在堆内存中,有n个对象存储n份数据
3.生命周期的区别
静态成员变量随着类文件的加载而存在,类文件的消失而消失
非静态成员变量随着对象的创建而存在,对象的消失而消失
网友评论