static关键字
Posted funsblog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了static关键字相关的知识,希望对你有一定的参考价值。
static关键字:
- static可以修饰类中的属性和方法。
-
使用static修饰的变量为静态变量
-
使用static修饰的方法为静态方法
-
静态变量和方法都可以直接通过类名来访问
静态变量
类的变量分为静态变量和实例变量2种,static修饰的是静态变量,没有使用static修饰的是实例变量。
static int b=1; 声明了一个静态变量,其值为1
int a = 9; 声明了一个实例变量,其值为9
静态变量和实例变量两者的区别:
静态变量在内存中只有一个内存空间,在加载类的过程中完成静态变量的内存分配,可以直接通过类名来访问。
每创建一个新的实例对象,就会为实例变量分配不同的内存,各个对象访问自己的实例变量(非静态的变量只能通过创建对象调用)。
无论创建了一个类的多少个对象,静态变量只初始化一次,所有的实例都可以访问此静态变量,而且可以通过类名直接访问。
静态方法
static修饰的方法叫做静态方法,可以直接用“类名.方法()”来调用
静态方法的调用不需要创建对象
静态方法中的代码只能调用类的静态成员,而不能出现类的实例成员。
注意:static修饰的方法或变量尽量不要通过对象调用,通过对象调用可能需要创建不必要的对象
1.静态方法与非静态方法之间的调用
1)静态的方法无法调用非静态的方法
因为静态方法随类的加载而加载,系统无法用已加载的方法调用一个为未加载的方法
改正方法:将test()设置为静态方法
也可以使用对象进行调用非静态方法,如下
2 )静态方法或变量可以通过对象或者类名进行调用
非静态的方法或变量只能通过对象调用
上图例题中的show()与test()都被成功调用。show()是静态方法,可以调用,test()是非静态,并没有随类加载进来,所以通过对象调用
2.静态变量与方法间的分析
1)静态方法不能调用非静态变量
错误提示:无法从静态方法中引用非静态变量。
static修饰的方法或变量会随着类的加载而加载。
(static方法中不能声明static变量,但是可以访问static变量)
输出结果为9.
3.什么时候需要使用static修饰?
如果功能是确定的不会改动的就使用static修饰。一旦静态修饰后,功能就是确定的了。
如果有错误请留言提醒我,(????)
以上是关于static关键字的主要内容,如果未能解决你的问题,请参考以下文章