登陆 / 注册
JAVA 学习手册 展开/折叠

static关键字

阅读数:11

timg432423.jpg“static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创

建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。“

这段话虽然只是说明了static方法的特殊之处,但是可以看出static关键字的基本作用,简而言之,一句话来描述就是:

方便在没有创建对象的情况下来进行调用(方法/变量)。


很显然,被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。

static可以用来修饰类的成员方法、类的成员变量,另外可以编写static代码块来优化程序性能。

360截图182311198511483.png

在我们的程序代码中经常能看到static关键字的身影,比如我们的main函数就是被static修饰的,除此之外,static还能修饰变量、方法、

代码块,它的应用场景很多,也有很重要的作用。现在一起来看看static关键字的内容吧!


static是java中非常重要的一个关键字,而且它的用法也很丰富,主要用法

用来修饰成员变量,将其变为类的成员,从而实现所有对象对于该成员的共享;

用来修饰成员方法,将其变为类方法,可以直接使用“类名.方法名”的方式调用,常用于工具类;

静态块用法,将多个类成员放在一起初始化,使得程序更加规整,其中理解对象的初始化过程非常关键;


从JVM的类加载机制的角度讲,静态资源是类初始化的时候加载的,而非静态资源是类new的时候加载的

被static修饰的变量、被static修饰的方法统一属于类的静态资源,是类实例之间共享的,换言之,一处变、处处变。


JDK把不同的静态资源放在了不同的类中而不把所有静态资源放在一个类里面,很多人可能想当然认为当然要这么做,但是是否想过为什

么要这么做呢?

这里主要有三个好处:

不同的类有自己的静态资源,这可以实现静态资源分类。比如和数学相关的静态资源放在java.lang.Math中,和日历相关的静态资源放在java.util.Calendar中,这样就很清晰了

避免重名。不同的类之间有重名的静态变量名、静态方法名也是很正常的,如果所有的都放在一起不可避免的一个问题就是名字重复,这时候怎么办?分类放置就好了。

避免静态资源类无限膨胀,这很好理解。


这里再总结一下静态和非静态之间的引用:

静态方法能不能引用非静态资源?不能,new的时候才会产生的东西,对于初始化后就存在的静态资源来说,根本不认识它。

静态方法里面能不能引用静态资源?可以,因为都是类初始化的时候加载的,大家相互都认识。

非静态方法里面能不能引用静态资源?可以,非静态方法就是实例方法,那是new之后才产生的,那么属于类的内容它都认识。




本节内容如下:

 静态变量

 静态方法

 静态代码块


微信扫码登陆