首页 > 代码库 > 一、Java基础之static关键字

一、Java基础之static关键字

static关键字可以用来修饰变量、方法、代码块以及内部类。

静态资源从JVM的类加载机制角度来说,它是在类首次被初始化时加载到方法区,而非静态资源需要类new出对象的时候被加载到堆栈里。如:使用Class.forName(“xxx”)方法初始化某个类来加载静态资源,同样的,在new出对象前会确保该类被初始化了。

 

static变量:

静态变量被所有对象共享,在内存中只有一份。故,被任意对象修改该静态变量后,会影响到所有对象。

(PS:在多线程中需要多注意共享资源的使用。)

 

static方法:

《Java编程思想》中说静态方法是没有this的方法。而非静态方法和变量都需要通过对象来访问(this),所以静态方法内部只能引用静态变量。非静态方法内部可以引用非静态变量、静态方法和静态变量。

静态方法和静态变量可以直接通过类名访问,即通过类名就可以在方法区查找到该类信息。

(PS:通过javap –verbose xxx.class  查看为什么静态方法没有this。默认非静态方法参数列表会自动加上this参数。this表示当前对象,故this可以访问所有静态非静态的方法和变量)

 

static代码块:

静态代码块与静态变量一样,当且仅当类首次初始化时执行。静态资源的加载顺序是按照定义顺序加载的。

注意:静态代码块对于定义在它之后的静态变量,可以赋值,但是不能访问

技术分享

 

static内部类:

静态内部类请参考后续内部类文章

 

static导入:

静态导入:必须写成import static,不能写成static import

好处:简化一些操作,增强可读性,不需要写对应类名即可使用静态方法

 

 

 


参考资料:

http://www.cnblogs.com/xrq730/p/4820992.html

http://www.cnblogs.com/dolphin0520/p/3799052.html

http://lavasoft.blog.51cto.com/62575/18771/

==================================================================
这是我在阅读他人博客,自我学习并归纳总结后写下的博文,我能保证这里的每一句话都是我经过认真推敲斟酌后写下的,同时也欢迎大家指出有问题的地方。我希望能站在巨人的肩膀上将知识分享给大家。

”如果我看得比别人更远些,那是因为我站在巨人的肩膀上” ——  牛顿
==================================================================

一、Java基础之static关键字