static可以用來定義靜態成員變量、靜態函數、靜態代碼塊。
靜態成員變量的語法特點
定義方法:在成員變量前面加上static
class Person{ static int i; //靜態成員變量}
在普通的成員變量中,成員變量的值是屬于單個對象的,修改某個成員變量的值對其他成員變量來說是沒有影響的。

在靜態的成員變量中,所有的對象使用的成員變量是同一個,值也一樣。當靜態成員變量的值被修改了,對象的成員變量值也跟著變化。
靜態成員變量可以直接用類名來調用,也可以用對象來調用靜態成員變量。
class Test{ public static void main(String args[]){ Person p1 = new Person(); Person p2 = new Person(); Person.i = 10; System.out.
靜態成員變量是類層次的變量,屬于這一個類,這個類所生成的所有對象使用的都是同一個靜態變量,任何一個成員變量的值如果修改,其他所有成員變量的值都會修改。
靜態成員函數的語法特點
定義方法:在成員函數前面加上static,靜態成員函數可以直接用類名來調用
class Person{ static void fun(){ System.out.println("我是靜態函數"); }}class Test{ public static void main(String args[]){ Person.fun(); //使用類調用靜態函數 }}
在靜態函數中不能調用非靜態的成員變量
class Person{ String name; static void talk(){ System.out.println("我叫"+name); }}
個人理解:當在成員函數前不加static時,可用this調用成員變量name(默認情況下省略this),this對象表示調用了這個成員函數的對象。加上static后,使用類名來調用靜態函數(沒有對象),成員變量必須要用對象來調用,所以在靜態函數中不能調用非靜態的成員變量(不能使用this),但可調用靜態成員變量。
靜態代碼塊的語法特點
class Test{ static{ System.out.println("我是靜態代碼塊"); } public static void main(String args[]){ }}
靜態代碼塊沒有名字,在裝載類的時候執行靜態代碼塊。靜態代碼塊用于給靜態變量賦初值。
新聞熱點
疑難解答