A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄玉昆 黑马帝   /  2013-2-5 01:11  /  1303 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黄玉昆 于 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




  • public class Math  
  • {  
  •    ...  
  •    public static final double PI = 3.14159265358979323846;//final将PI设置为不可再定义的常量
  •    ...  
  • }

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

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




  • class Student  
  • {  
  •     private int id;  
  •     private static int nextId = 1;//共享一个nextId
  •     //获取id的访问器
  •     public int getId()  
  •     {  
  •         return id;  
  •     }  
  •     public void setId()  
  •     {  
  •         id = nextId;  
  •         nextId++;  
  •     }  
  • }

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

3)静态方法:

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

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




  • private static String country = "CN";//因为国家是共有的,共享
  • public static void getCountry()  
  • {  
  •     return country;  
  • }

2、静态的应用:

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

3、静态代码块

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

格式:




  • static  
  •    {语句}

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


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

举例.png

1 个回复

倒序浏览
很好,很强大,谢谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马