在java中聲明類的成員變量和成員方法時,可以使用static關(guān)鍵字把成員聲明為靜態(tài)成員。靜態(tài)變量也叫類變量,非靜態(tài)變量叫實例變量,靜態(tài)方法也叫類方法,非靜態(tài)方法叫實例方法。
類變量屬于整個類,一個類可以創(chuàng)建多個對象,但類的每個靜態(tài)變量在內(nèi)存中只有一份拷貝為該類的所有對象共享。類變量(類方法)不用創(chuàng)建對象就可以直接通過類名訪問。下面舉例說明類變量與實例變量的區(qū)別:
class UseBook{
String name;
float price;
int count=0; //實例變量,記錄創(chuàng)建對象的個數(shù)
static int bookNumber=100;//靜態(tài)變量,書的起始編號為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();
}
}
結(jié)果如下所示:
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的目的是記錄創(chuàng)建對象的數(shù)目,但運行結(jié)果卻不是期望的輸出。因為每個對象都擁有一個實例變量count,創(chuàng)建對象時,對count加一的操作是對每個對象的count成員而不是對一個唯一的count操作,所以無法記錄創(chuàng)建對象的個數(shù)。而bookNumber是靜態(tài)變量,為所有對象共享,所有對象操作的是同一個bookNumber成員變量,每創(chuàng)建一個對象bookNumber值增加1,實現(xiàn)了書的自動編號。
posted on 2007-10-23 15:46
jiafang83 閱讀(10415)
評論(9) 編輯 收藏