更新時間:2020-06-28 15:59:37 來源:動力節(jié)點 瀏覽2080次
在《Java編程思想》P86頁有這樣一段話:“static方法就是沒有this的方法。在static方法內(nèi)部不能調(diào)用非靜態(tài)方法,反過來是可以的。而且可以在沒有創(chuàng)建任何對象的前提下,僅僅通過類本身來調(diào)用static方法。這實際上正是static方法的主要用途。”這段話雖然只是說明了static方法的特殊之處,但是可以看出static關(guān)鍵字的基本作用,簡而言之,一句話來描述就是:方便在沒有創(chuàng)建對象的情況下來進行調(diào)用(方法/變量)。很顯然,被static關(guān)鍵字修飾的方法或者變量不需要依賴于對象來進行訪問,只要類被加載了,就可以通過類名去進行訪問。static可以用來修飾類的成員方法、類的成員變量,另外可以編寫static代碼塊來優(yōu)化程序性能。
static方法
static方法一般稱作靜態(tài)方法,由于靜態(tài)方法不依賴于任何對象就可以進行訪問,因此對于靜態(tài)方法來說,是沒有this的,因為它不依附于任何對象,既然都沒有對象,就談不上this了。并且由于這個特性,在靜態(tài)方法中不能訪問類的非靜態(tài)成員變量和非靜態(tài)成員方法,因為非靜態(tài)成員方法/變量都是必須依賴具體的對象才能夠被調(diào)用。但是要注意的是,雖然在靜態(tài)方法中不能訪問非靜態(tài)成員方法和非靜態(tài)成員變量,但是在非靜態(tài)成員方法中是可以訪問靜態(tài)成員方法/變量的。舉個簡單的例子:
package?cn.bzu.look.dao;??
????public?class?MyObject?{
???? //非靜態(tài)變量
???? private?String?str1?="property";
???? //靜態(tài)變量
???? private?static?String?str2?="staticProperty";
????
???? public?MyObject()?{
????
???? }
???? //非靜態(tài)方法
???? public?void?print1()?{
???? System.out.println(str1);
???? System.out.println(str2);
???? print2();
???? }
???? //靜態(tài)方法
???? public?static??void?print2()?{
???? //這一句報錯,報錯信息是Cannot?make?a?static?reference?to?the?non-static?field?str1
???? System.out.println(str1);
???? System.out.println(str2);
???? /*
???? ?*?調(diào)用非靜態(tài)的方法會報錯,
???? ?*?Cannot?make?a?static?reference?to?the?non-static?method?print1()?from?the?type?MyObject
???? ?*/
???? print1();
???? }
????}
以上就是動力節(jié)點java培訓(xùn)機構(gòu)的小編針對“Java中static關(guān)鍵字的用法”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743