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 閱讀(10416) 評論(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 之能值傳遞,弄得我在許多工作中用了許多拙劣的方法去實現修改。
          原來{類}和{數組}是傳地址,實際上就是引用傳遞
          這點給我帶來許多方便和編成思想上的解放!!
          感謝作者  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 固原市| 安宁市| 丰都县| 江口县| 宁武县| 丰台区| 阜阳市| 彝良县| 新津县| 宣恩县| 长兴县| 东莞市| 泗水县| 合肥市| 教育| 思茅市| 霞浦县| 青冈县| 眉山市| 邳州市| 广水市| 吉林省| 射洪县| 隆林| 汤原县| 辽源市| 平度市| 镇远县| 台中县| 抚顺市| 姜堰市| 厦门市| 开平市| 公主岭市| 玉林市| 天峨县| 南通市| 健康| 区。| 周口市| 祁门县|