黑马程序员技术交流社区

标题: 黑马程序员之 static修饰符学习总结 [打印本页]

作者: 黄玉昆    时间: 2013-2-5 01:11
标题: 黑马程序员之 static修饰符学习总结
本帖最后由 黄玉昆 于 2013-2-10 19:00 编辑

我们在学习java的最初就接触到了static这个修饰main方法的修饰符,那么static在java中有什么特点和作用呢?下面是对static的几点总结:

一、总体来说static有这么几个特点:

1、随类的加载而加载,在类中生命周期最长;类存在,static修饰的成员就存在,否则消亡。

2、优先于对象而存在,在对象建立之前,就已经初始化了。

3、可被所有对象共享,因在类中是惟一的,属于此类,可以被此类对象共享。

4、可直接被类名调用,用类名.方法名调用。

二、static的用法:

1、修饰成员:包括成员变量和成员方法,当成员被static修饰后,就多了一种调用方式,即可以被对象和类名调用

需要注意的一点:static绝对不能修饰局部变量。为什么呢?

局部变量的作用域就是它所在的方法或代码块中,而static的变量刚是定义在类中方法体外,是作为整个类共同使用的,它从类加载开始就存在,而局部变量在它所在的方法或代码块结束后就要被回收的。所以是不能修饰局部变量的

1)静态常量:例如:在Math类中定义了一个静态常量PI





如果省略了static,PI就变成了一个实例常量,那么,每一个Math对象就都有自己的一个PI拷贝了,这样的话,对内存也是一种占用。

2)静态变量:如果将变量定义为static,那么每个类中只有这样一个变量。例如:





每个学生都有自己的一个id号,但这个Student的所有对象都共享一个nextId,即使不存在对象,也仍存在nextId,因为它是属于类的,而不属于任何独立的对象,所以它是随着类的加载而加载的,随着类的消亡而消亡的。

3)静态方法:

静态方法是一种不向对象进行操作的方法。当方法被static修饰时,是用类名.方法名的方式使用的,当然也可用对象名.方法名,但这样会让别人误以为此方法是非静态的。但静态方法有一点需要注意的是:静态方法只能访问静态成员,因此静态方法也就不能定义this和super等关键字了。

那么在什么时候用到静态方法呢?第一、当一个方法不需要访问对象是,其中所需的参数都是通过显示参数提供的。比如说Math.sqrt(double n)。第二、一个方法只需要访问累的静态变量时,如Person.getCountry();





2、静态的应用:

当每个应用程序都有共同之处,可将其封装,提高其复用性。需要注意的是:a.对象时用于封装数据的;b.对数据的操作方法,若没用到方法中特有的数据,则无需创建对象而占用多余的内存。

3、静态代码块

特点:a.随着类的加载而执行,且优先于主函数;b.只执行一次,类再创建对象,则不再执行,已经存在于内存中。

格式:





由于字数限制,下面是代码截图,具体代码请看:http://blog.csdn.net/shengfeixiang/article/details/8567254


举例.png (40.57 KB, 下载次数: 31)

举例.png

作者: 刘明杰    时间: 2013-2-5 08:35
很好,很强大,谢谢分享





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2