static final:
static修飾的屬性強調(diào)它們只有一個意推,final修飾的屬性表明是一個常數(shù)(創(chuàng)建后不能被修改)净神。
static final修飾的屬性表示一旦給值榴捡,就不可修改祭犯,并且可以通過類名訪問忱辅。
static final也可以修飾方法,表示該方法不能重寫霉囚,可以在不new對象的情況下調(diào)用捕仔。
final:
1:final可以修飾屬性,方法,類榜跌,局部變量(方法中的變量)
2:final修飾的屬性的初始化可以在編譯期闪唆,也可以在運行期,初始化后不能被改變钓葫。
3:final修飾的屬性跟具體對象有關(guān)悄蕾,在運行期初始化的final屬性,不同對象可以有不同的值础浮。
? ?4:final修飾的屬性表明是一個常數(shù)(創(chuàng)建后不能被修改)帆调。
5:final修飾的方法表示該方法在子類中不能被重寫;
6:final修飾的類表示該類不能被繼承豆同。
對于基本類型數(shù)據(jù)番刊,final會將值變?yōu)橐粋€常數(shù)(創(chuàng)建后不能被修改);但是對于對象句柄(亦可稱作引用或者指針)影锈,final會將句柄變?yōu)橐粋€常數(shù)(進行聲明時芹务,必須將句柄初始化到一個具體的對象。而且不能再將句柄指向另一個對象鸭廷。但是锄禽,對象的本身是可以修改的。這一限制也適用于數(shù)組靴姿,數(shù)組也屬于對象沃但,數(shù)組本身也是可以修改的。方法參數(shù)中的final句柄佛吓,意味著在該方法內(nèi)部宵晚,我們不能改變參數(shù)句柄指向的實際東西,也就是說在方法內(nèi)部不能給形參句柄再另外賦值)维雇。
static:
1:static可以修飾:屬性淤刃,方法,代碼段吱型,內(nèi)部類(靜態(tài)內(nèi)部類或嵌套內(nèi)部類)
2:static修飾的屬性的初始化在編譯期(類加載的時候)逸贾,初始化后能改變。
3:static修飾的屬性所有對象都只有一個值津滞。
4:static修飾的屬性強調(diào)它們只有一個铝侵。
5:static修飾的屬性、方法触徐、代碼段跟該類的具體對象無關(guān)咪鲜,不創(chuàng)建對象也能調(diào)用static修飾的屬性、方法等
6:static和“this撞鹉、super”勢不兩立疟丙,static跟具體對象無關(guān)颖侄,而this、super正好跟具體對象有關(guān)享郊。
7:static不可以修飾局部變量览祖。
static final和final static:
static final和final static語法和用法上沒有任何區(qū)別,一般習慣static寫在前面炊琉。
靜態(tài)變量和實例變量的區(qū)別展蒂????
在語法定義上的區(qū)別:靜態(tài)變量前要加static關(guān)鍵字,而實例變量前不加温自。
在程序運行時的區(qū)別:實例變量屬于某個對象的屬性玄货,必須創(chuàng)建了實例對象皇钞,其中的實例變量才會被分配空間悼泌,才能使用這個實例變量。靜態(tài)變量不屬于某個實例對象夹界,而是屬于類馆里,所以也稱為類變量,只要程序加載了類的字節(jié)碼文件可柿,不用創(chuàng)建任何實例象鸠踪,靜態(tài)變量就會被分配空間,靜態(tài)變量就可以被使用了复斥。?總之营密,實例變量必須創(chuàng)建對象后才可以通過這個對象來使用,靜態(tài)變量則可以直接使用類名來引用目锭。
是否可以從一個static方法內(nèi)部發(fā)出對非static方法的調(diào)用评汰?
不可以。因為非static方法要與對象關(guān)聯(lián)在一起痢虹,必須創(chuàng)建一個對象后被去,才可以在該對象上進行方法的調(diào)用,而static方法調(diào)用時不需要創(chuàng)建對象奖唯,可以直接調(diào)用惨缆。也就是說,一個static方法被調(diào)用時丰捷,可能還沒有創(chuàng)建任何實例對象坯墨,所以,一個static方法內(nèi)部不可以發(fā)出對非static方法的調(diào)用病往。