posts - 55,comments - 89,trackbacks - 0

         在java中声明类的成员变量和成员方法时,可以使用static关键字把成员声明为静态成员。静态变量也叫类变量,非静态变量叫实例变量,静态方法也叫类方法,非静态方法叫实例方法
        类变量属于整个类,一个类可以创建多个对象,但类的每个静态变量在内存中只有一份拷贝为该类的所有对象共享。类变量(类方法)不用创建对象就可以直接通过类名访问。下面举例说明类变量与实例变量的区别:
class UseBook{
    String     name;
    float       price;
    int        count=0;   //实例变量,记录创建对象的个数
    static    int     bookNumber=100;//静态变量,书的起始编号为100
    UseBook(String n,float p){
        name = n;
        price = p;
        count++;
        bookNumber++;
    }
    void    output(){
        prt("name: " + name + "\t" + "price: " + price + "\t");
        prt("bookNumber: " + bookNumber + "\t" + "count: " + count + "\t") ;
    }
    public static void prt(String s){
        System.out.print(s);
    }
    public static void main(String[] args){
        UseBook    b1,b2,b3;
        b1=new UseBook("java2",36.0f);
        b1.output();
        b2=new UseBook("c++",40.0f);
        b2.output();
        b3=new UseBook("vb",20.0f);
        b3.output();     
    }
}

结果如下所示:
    

name: java2            price: 36.0             bookNumber: 101    count: 1

name: c++             price: 40.0             bookNumber: 102     count: 1

name: vb               price: 20.0             bookNumber: 103     count: 1


程序运行说明:程序中定义count的目的是记录创建对象的数目,但运行结果却不是期望的输出。因为每个对象都拥有一个实例变量count,创建对象时,对count加一的操作是对每个对象的count成员而不是对一个唯一的count操作,所以无法记录创建对象的个数。而bookNumber是静态变量,为所有对象共享,所有对象操作的是同一个bookNumber成员变量,每创建一个对象bookNumber值增加1,实现了书的自动编号。

posted on 2007-10-23 15:46 jiafang83 阅读(8564) 评论(9)  编辑  收藏

FeedBack:
# re: java中的static关键字和静态成员
2007-10-24 10:48 | 翔南
count是全局变量就OK啦!
呵呵
  回复  更多评论
  
# re: java中的static关键字和静态成员
2007-10-24 13:57 | freeman1984
尊敬知识,顶一下。  回复  更多评论
  
# re: java中的static关键字和静态成员
2007-10-26 00:24 | 吴红佳
前段时间就是因为把几个变量定义为静态,结果在每个实例后静态变量的内容都会改变,每个实例调用的都是上个实例改变后的结果。
害我几天都没找到原因  回复  更多评论
  
# re: java中的static关键字和静态成员
2008-02-26 15:33 | qinxiang
count改为全局变量也不行哈!一定要加上static  回复  更多评论
  
# re: java中的static关键字和静态成员[未登录]
2008-08-18 17:13 | june
我还是不明白!cout的值的变化不是出现同类的书才会自加的吗?  回复  更多评论
  
# re: java中的static关键字和静态成员
2008-08-18 17:31 | jiafang
@june
虽然书的类型不一样,但都是UseBook的对象,所以count还是会自加的。  回复  更多评论
  
# re: java中的static关键字和静态成员
2008-10-01 21:11 | 小悟
看完 我一下就清晰了 谢谢了 谢的很好  回复  更多评论
  
# re: java中的static关键字和静态成员[未登录]
2009-06-23 11:02 | colin
感谢分享!  回复  更多评论
  
# re: java中的static关键字和静态成员
2009-07-19 09:43 | 感谢人
太好了,我一直以为JAVA 之能值传递,弄得我在许多工作中用了许多拙劣的方法去实现修改。
原来{类}和{数组}是传地址,实际上就是引用传递
这点给我带来许多方便和编成思想上的解放!!
感谢作者  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: