資源描述:
《Java中的靜態(tài)變量靜態(tài)方法靜態(tài)塊與靜態(tài)類(lèi).docx》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、Java中的靜態(tài)變量、靜態(tài)方法、靜態(tài)塊與靜態(tài)類(lèi)在Java中,static是一個(gè)關(guān)鍵字,我們不能用它來(lái)作為類(lèi)名或包名,static主要有四種用途,即作為靜態(tài)變量、靜態(tài)方法、靜態(tài)塊和靜態(tài)類(lèi)。1、靜態(tài)變量Javastaticvariables靜態(tài)變量就是類(lèi)變量,它并不屬于類(lèi)的實(shí)例,僅屬于類(lèi)本身。在所有能訪問(wèn)該類(lèi)的地方,也就可能訪問(wèn)或修改該變量,它是非線程安全的,因此,靜態(tài)變量通常是和final關(guān)鍵字結(jié)合在一起,用來(lái)標(biāo)識(shí)該變量是一個(gè)公共資源和常量。只要靜態(tài)變量不是private私有的,那么我們可通過(guò)ClassName.variableName的方式
2、進(jìn)行訪問(wèn)。//staticvariableexampleprivatestaticintcount;publicstaticStringstr;publicstaticfinalStringDB_USER="myuser";2、靜態(tài)方法Javastaticmethods靜態(tài)方法與靜態(tài)變量一樣,也是屬于類(lèi)本身而不屬于類(lèi)的實(shí)例對(duì)象。在一個(gè)靜態(tài)方法中,除了局部變量外,它能訪問(wèn)的外部變量也必須是靜態(tài)的,能訪問(wèn)的外部方法也必須是靜態(tài)的,實(shí)例變量和實(shí)例方法均不能訪問(wèn)。在絕大多數(shù)情況下,靜態(tài)方法通常是public的,作為工具類(lèi)的工具方法出現(xiàn)。//stat
3、icmethodexamplepublicstaticvoidsetCount(intcount){????if(count>0)????StaticExample.count=count;}?//staticutilmethodpublicstaticintaddInts(inti,int...js){????intsum=i;????for(intx:js)sum+=x;????returnsum;}3、靜態(tài)塊JavastaticBlock靜態(tài)塊是由一些語(yǔ)句組成的段落,它在類(lèi)被加載進(jìn)內(nèi)存時(shí)執(zhí)行,且無(wú)論類(lèi)被使用多少次它都只會(huì)執(zhí)行一次。一個(gè)
4、類(lèi)的靜態(tài)塊可以有多個(gè),其執(zhí)行順序由它在代碼中的順序決定。在靜態(tài)塊中,我們通常進(jìn)行一些需要進(jìn)行異常捕獲的靜態(tài)變量的初始化。static{????//canbeusedtoinitializeresourceswhenclassisloaded????System.out.println("StaticExamplestaticblock");????//canaccessonlystaticvariablesandmethods????str="Test";????setCount(2);}4、靜態(tài)類(lèi)Javastaticmethods靜態(tài)類(lèi)都
5、是內(nèi)部類(lèi),static不能用于修飾頂級(jí)的類(lèi)。對(duì)于單例模式用靜態(tài)類(lèi)來(lái)實(shí)現(xiàn)就是一個(gè)很不錯(cuò)的選擇。5、完整示例packagecom.journaldev.misc;?publicclassStaticExample{?????//staticblock????static{????????//canbeusedtoinitializeresourceswhenclassisloaded????????System.out.println("StaticExamplestaticblock");????????//canaccessonlystat
6、icvariablesandmethods????????str="Test";????????setCount(2);????}?????????//multiplestaticblocksinsameclass????static{????????System.out.println("StaticExamplestaticblock2");????}?????????//staticvariableexample????privatestaticintcount;//keptprivatetocontrolit'svaluethrou
7、ghsetter????publicstaticStringstr;?????????publicintgetCount(){????????returncount;????}?????//staticmethodexample????publicstaticvoidsetCount(intcount){????????if(count>0)????????StaticExample.count=count;????}?????????//staticutilmethod????publicstaticintaddInts(inti,int
8、...js){????????intsum=i;????????for(intx:js)sum+=x;????????returnsum;????}?????//staticcl