static:
是java中非常重要的一个关键字,而且它的用法也很丰富,主要有四种用法:
- 用来修饰成员变量,静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
- 用来修饰成员方法,将其变为类方法,可以直接使用“类名.方法名”的方式调用,常用于工具类;在静态方法中不能访问非静态成员方法和变量,但是在非静态成员方法中是可以访问静态成员方法/变量的
- 静态块用法,将多个类成员放在一起初始化,使得程序更加规整,其中理解对象的初始化过程非常关键;
- 静态导包用法,将类的方法直接导入到当前类中,从而直接使用“方法名”即可调用类方法,更加方便。
- 在类中的static关键字不会影响到变量或者方法的作用域。private static int 不能被“类名.方法名"直接使用
被static修饰的成员将最优先加载到内存里.
Static确实是存在诸多的作用,但是它也存在一些缺陷。
- 它只能调用static变量。
- 它只能调用static方法。
- static是不允许用来修饰局部变量
- 不能以任何形式引用this、super。
- static变量在定义时必须要进行初始化,且初始化时间要早于非静态变量。