Static静态修饰符关键字
开发工具与关键技术:MyEclipse 10;Java基础语法
撰写时间:2019-06-03
Static关键字是属于静态修饰符用于修饰成员的一个关键字,static静态修饰的数据不仅是属于共享数据,对象中储存的是特有数据(注意的是有些数据是共享的,而有些数据是特性的,则需要被对象封装内部),还可以被类名调用。Static的成员随着类的加载就已经存在了,所以说static优先于对象存在。总结一下被static静态修饰后的成员具备以下特点:
- 用于修饰成员变量和成员函数
- 随着类的加载而加载
- 优先于对象存在被所有对象所共享
- 可以直接被类名调用
成员变量和静态变量的区别:
- 成员变量随着对象的创建而存在,随着对象的被回收而释放;静态变量随着类的加载而存在,随着类的消失而消失,当虚拟机关闭的时候类就消失了。由此可推出两个变量的生命周期是不同的。
- 成员变量只能被对象调用;静态变量可以被对象调用,还可以被类名调用在使用静态变量时尽量不要用对象调用,类名调用是静态变量的专属方式。
- 成员变量可以称为实例变量;静态变量可以称为类变量
- 成员变量数据存储在堆内的对象中,所以也叫对象的特有数据;静态变量数据存储在方法区的静态区,所以也叫对象的共享数据
使用Static关键字时注意:
- 静态方法只能访问静态成员(非静态既可以访问静态,又可以访问非静态)
- 静态方法中不可以写this,super关键字
- 主函数时静态的
无法从静态上下文中引用非静态方法show(),主函数调用时只能调用静态方法,方法show()会出现访问局限性
无法从静态上下文中引用非静态变量num,num没加静态意味着num是这个对象中特有的数据,加静态就是共享数据了
想要调用方法show()无非两种方式,要么用类名调用,要么对象调用。可以new一个对象,对象是万能的。
public static void main(String[] args) {}
上面的代码是Java的主函数,主函数的特殊之处格式是固定的、是被虚拟机(JVM)所识别和调用。主函数用public修饰符是因为public权限最大的,使用static关键字是因为虚拟机在调用主函数的时候是不需要对象的,虚拟机直接用主函数所属类名调用即可,则不需要new对象。Void主函数没有具体的返回值。Main是函数名,不是关键字,只是一个jvm识别的固定的名字。String[] args这是主函数的参数列表,是一个数组类型的参数,而且元素都是字符串类型。