static關(guān)鍵字的用途
在《Java編程思想》P86頁(yè)有這樣一段話:“static方法就是沒(méi)有this的方法。在static方法內(nèi)部不能調(diào)用非靜態(tài)方法,反過(guò)來(lái)是可以的。而且可以在沒(méi)有創(chuàng)建任何對(duì)象的前提下,僅僅通過(guò)類本身來(lái)調(diào)用static方法。這實(shí)際上正是static方法的主要用途。”這段話雖然只是說(shuō)明了static方法的特殊之處,但是可以看出static關(guān)鍵字的基本作用,簡(jiǎn)而言之,一句話來(lái)描述就是:方便在沒(méi)有創(chuàng)建對(duì)象的情況下來(lái)進(jìn)行調(diào)用(方法/變量)。很顯然,被static關(guān)鍵字修飾的方法或者變量不需要依賴于對(duì)象來(lái)進(jìn)行訪問(wèn),只要類被加載了,就可以通過(guò)類名去進(jìn)行訪問(wèn)。static可以用來(lái)修飾類的成員方法、類的成員變量,另外可以編寫static代碼塊來(lái)優(yōu)化程序性能。
static方法
static方法一般稱作靜態(tài)方法,由于靜態(tài)方法不依賴于任何對(duì)象就可以進(jìn)行訪問(wèn),因此對(duì)于靜態(tài)方法來(lái)說(shuō),是沒(méi)有this的,因?yàn)樗灰栏接谌魏螌?duì)象,既然都沒(méi)有對(duì)象,就談不上this了。并且由于這個(gè)特性,在靜態(tài)方法中不能訪問(wèn)類的非靜態(tài)成員變量和非靜態(tài)成員方法,因?yàn)榉庆o態(tài)成員方法/變量都是必須依賴具體的對(duì)象才能夠被調(diào)用。但是要注意的是,雖然在靜態(tài)方法中不能訪問(wèn)非靜態(tài)成員方法和非靜態(tài)成員變量,但是在非靜態(tài)成員方法中是可以訪問(wèn)靜態(tài)成員方法/變量的。舉個(gè)簡(jiǎn)單的例子:
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()?{???? //這一句報(bào)錯(cuò),報(bào)錯(cuò)信息是Cannot?make?a?static?reference?to?the?non-static?field?str1???? System.out.println(str1);???? System.out.println(str2);???? ???? print1();???? }????}
以上就是天津卓眾教育java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java中static關(guān)鍵字的用法”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。