Ⅰ java中靜態變數成員有什麼特點簡單點說 初學者
1.特點一:靜態變數的值是共享。比如說A類中有個靜態變數V_A,A類創建了兩個實例a,b。如果給實例a的變數V_A賦值,如a.V_A=1。那麼這時候查看實例b的V_A變數的值也為1,也就是說A對象實例化的兩個類共享同一個變數值,而且靜態變數
2.特點二:不需要對象實例化就可以使用。比如A類中的靜態變數V_A可以用A.V_A的形式使用
Ⅱ java中的靜態成員是否是在類載入的時候就被載入到內存中了
對,首先可以肯定的是你的說法是正確的。
類載入的過程有以下幾個過程:載入、驗證、准備、解析
在准備的過程中,靜態成員變數就會進行內存分配,而不包括實例變數,實例變數是在對象實例化隨著對象一起分配在java堆中的。但是要注意一點,比如:public static int a=1;那變數在准備階段過後的初始值是0而不是1.因為這個時候尚未執行任何的Java方法。而是賦值了一個初始值,如果是引用成員變數就會為null,其他基本類型對應的是其基本默認值。
ps:以上資料來自《深入Jvm虛擬機》
Ⅲ 靜態數據成員在Java當中稱作什麼
類成員。變數稱為類變數、靜態變數。方法稱為類方法、靜態方法。塊被成為類塊、靜態塊。
特點是類無需實例化,就可使用。初始化過程中,處於實例成員之前。並且在繼承後,並使用多態的情況下,不會被覆蓋,只能被遮蔽。
Ⅳ Java中靜態成員和實例成員的區別,及main函數
在外部調用靜態方法時,可以使用"類名.方法名"的方式,也可以使用"對象名.方法名"的方式。而實例方法只有後面這種方式。也就是說,調用靜態方法可以無需創建對象。特殊的就是一個類的main方法,都是以public static void限制的,所以這個方法可以在其他類中直接以類名進行調用,如可以在類B中不創建A的對象而直接調用A的main方法:A.main(param)
靜態方法在訪問本類的成員(一定要注意,是本類的成員,當訪問外類的成員的時候就完全沒有這個限制了!!!其實想想也對,如果訪問外類成員的時候也要有限制,那麼main函數就無法執行外類的一些非靜態方法了,那麼當繼承過來的時候就完全沒有了用處了。)時,只允許訪問靜態成員(即靜態成員變數和靜態方法),而不允許訪問實例成員變數和實例方法;實例方法則無此限制。main()方法是一個典型的靜態方法,它同樣遵循一般靜態方法的規則,所以它可以由系統在創建對象之前就調用。
Main函數:每個書寫class的java文件中至多能有一個用來運行的main方法(如果需要運行的話就要有main方法),以上所述,所有的類必須存在於一個包中,方法必須存在於一個類中(main方法也是一種特殊的方法)。每個包裡面可以有n個Java文件,所以,每個包中可以有數個main方法(函數)。
Ⅳ java中靜態內部類是怎麼定義的
需要了解2個概念:內部類和靜態修飾符static
1)首先,用內部類是因為內部類與所在外部類有一定的關系,往往只有該外部類調用此內部類。所以沒有必要專門用一個Java文件存放這個類。
2)靜態都是用來修飾類的內部成員的。比如靜態方法,靜態成員變數,靜態常量。它唯一的作用就是隨著類的載入(而不是隨著對象的產生)而產生,以致可以用類名+靜態成員名直接獲得。
這樣靜態內部類就可以理解了,因為這個類沒有必要單獨存放一個文件,它一般來說只被所在外部類使用。並且它可以直接被用
外部類名+內部類名
獲得。
以下舉例說明怎麼使用:
Student類有個叫School的內部類(非靜態)
Student
stu
=
new
Student();
stu.School
sch
=
new
stu.School();
sch就是School的一個對象。
假如School是內部靜態類:
Student.School
sch
=
new
Student.School();
Ⅵ java 為什麼實例對象可以訪問類的靜態成員。
按初始化的先後順序來考慮即可明白。
類的靜態成員不需要有實例對象,在類載入的時候,就可被初始化了。
類的靜態成員的初始化,是比類的實例對象要提前完成的,所以實例對象可以訪問類的靜態成員。
Ⅶ 請教一個java問題,同一個類被實例化成若干個線程,它們的靜態成員變數和非靜態的內存地址是一樣的嗎
靜態成員變數地址:一樣。因為靜態成員變數在類裝載入內存時,進行初始化+賦值。所以有且只有一份,所以地址是一樣的。
非靜態成員變數地址:不一樣。new一次,分配一次內存,所以不一樣
Ⅷ JAVA里的靜態成員是什麼
是類和類的多個對象共同擁有的一個屬性或者是方法,靜態成員可以通過類名.靜態成員名或者是對象名.靜態成員名調用,需要注意的是,如果你定義了一個靜態成員public static int A = 10,類調用了這個靜態成員並且將10改成了20,那麼其它的對象再調用這個A此時他們得到的值就是20,因為他們和類共同擁有一個靜態成員。
Ⅸ java中私有的屬性、靜態成員可以被子類繼承嗎
靜態成員分為靜態屬性和靜態方法,而靜態成員是不可以被繼承的,因為靜態成員是依附於類存在的,它屬於類;靜態方法在被子類「繼承」(實際可以理解為聲明了一個跟父類同名的靜態方法)後,如果子類將該方法進行了重寫,在實例化對象時,如果是子類對象則調用的是子類中該方法的實現方式,如果是父類對象則調用父類中該方法的實現方式。是一種對父類中靜態方法的隱藏,但是父類的靜態方法一直存在,不會像非靜態方法那樣,一但發生子類將父類方法重寫,不管是子類對象還是父類對象調用該方法都是子類的實現方式;
另一方面,如果子類中靜態方法是繼承自父類的話,應該是可以用重寫@Override進行標記重寫的,但在java中不允許在子類中與父類同名同參的靜態成員前使用該註解,這也說明了子類中的靜態方法不是繼承自父類,而是一種聲明;
另外所有父類中的非靜態成員都可以被子類繼承,private等成員訪問控制符,只限定子類是否可以調用該成員,不限定是否可以被繼承