static與final的區(qū)別 為什么static和final通常連用?
為什么static和final通常連用?static和final的含義不同。修改static時(shí),表示對(duì)象是靜態(tài)的,而修改final時(shí),表示對(duì)象只能賦值一次。當(dāng)它們一起使用時(shí),這是因?yàn)槎x的對(duì)象要求它是
為什么static和final通常連用?
static和final的含義不同。修改static時(shí),表示對(duì)象是靜態(tài)的,而修改final時(shí),表示對(duì)象只能賦值一次。當(dāng)它們一起使用時(shí),這是因?yàn)槎x的對(duì)象要求它是靜態(tài)的,并且不能修改它的值。例如:static int a=1 static final B=1。a和B的區(qū)別在于,a可以在程序中重新賦值為2、3或其他整數(shù),而B(niǎo)不能在程序中重新賦值。B總是1,也就是說(shuō),B是常數(shù)。Final int c=1static Final B=1 c和B的區(qū)別在于B存儲(chǔ)在一個(gè)靜態(tài)空間中,并且在程序運(yùn)行時(shí)不會(huì)被釋放。它將永遠(yuǎn)占用內(nèi)存直到程序終止,而C將在程序用完時(shí)自動(dòng)釋放,不再使用。當(dāng)一個(gè)常量或字符串需要在程序中重復(fù)使用時(shí),我們可以將其定義為靜態(tài)final,這樣內(nèi)存就不必重復(fù)應(yīng)用和釋放空間。
“static”和“final”的區(qū)別是什么?
1:finalfinal類(lèi)無(wú)法繼承并且沒(méi)有子類(lèi)。final類(lèi)中的方法默認(rèn)為final。
Final方法不能被子類(lèi)方法重寫(xiě),但它們可以被繼承。
最后一個(gè)成員變量表示一個(gè)常量,只能賦值一次。賦值后,值不會(huì)更改。
Final不能用于修改構(gòu)造函數(shù)。
注意:父類(lèi)的私有成員方法不能被子類(lèi)方法重寫(xiě),因此私有類(lèi)型的方法默認(rèn)為final。
2:靜態(tài)表示“全局”或“靜態(tài)”。它用于修改成員變量和成員方法。它還可以形成靜態(tài)代碼塊。然而,Java語(yǔ)言中沒(méi)有全局變量的概念。
靜態(tài)修改的成員變量和成員方法獨(dú)立于類(lèi)的任何對(duì)象。用public修飾的靜態(tài)成員變量和成員方法本質(zhì)上是全局變量和全局方法。聲明其他類(lèi)的對(duì)象時(shí),不會(huì)生成靜態(tài)變量的副本,但該類(lèi)的所有實(shí)例共享同一個(gè)靜態(tài)變量。
靜態(tài)變量可以用private修飾,表示可以在類(lèi)的靜態(tài)代碼塊或類(lèi)的其他靜態(tài)成員方法中使用該變量。
靜態(tài)修改的成員變量和成員方法傳統(tǒng)上稱(chēng)為靜態(tài)變量和靜態(tài)方法。它們可以通過(guò)類(lèi)名直接訪問(wèn)。訪問(wèn)語(yǔ)法是:class name。靜態(tài)方法名(參數(shù)列表…)類(lèi)名。靜態(tài)變量名
final可以修改:屬性、方法、類(lèi)、局部變量(方法中的變量)
final修改的屬性可以在編譯時(shí)初始化,也可以在運(yùn)行時(shí)初始化,初始化后不能更改。
final修改的屬性與特定對(duì)象相關(guān)。對(duì)于在運(yùn)行時(shí)初始化的最終屬性,不同的對(duì)象可以有不同的值。
final修改的屬性表示它是一個(gè)常量(創(chuàng)建后不能修改)。
最終修改的方法意味著無(wú)法在子類(lèi)中重寫(xiě)該方法,而最終修改的類(lèi)意味著無(wú)法繼承該類(lèi)。
對(duì)于基本類(lèi)型數(shù)據(jù),final會(huì)將值更改為常量(創(chuàng)建后不能修改);但是對(duì)于對(duì)象句柄(也稱(chēng)為引用或指針),final會(huì)將句柄更改為常量(聲明時(shí)必須初始化為特定對(duì)象)。你不能再把一個(gè)控制柄指向另一個(gè)對(duì)象。但是,可以修改對(duì)象本身。這個(gè)限制也適用于數(shù)組,數(shù)組也屬于對(duì)象,可以修改。方法參數(shù)中的最終句柄意味著我們不能改變參數(shù)句柄指向方法內(nèi)部的實(shí)際內(nèi)容,也就是說(shuō),我們不能為方法內(nèi)部的形式參數(shù)句柄賦值。
Static可以修改:屬性、方法、代碼段、內(nèi)部類(lèi)(靜態(tài)內(nèi)部類(lèi)或嵌套內(nèi)部類(lèi))
在編譯時(shí)初始化(類(lèi)加載)后,可以更改Static modified屬性的初始化。
靜態(tài)裝飾屬性的所有對(duì)象只有一個(gè)值。
靜態(tài)裝飾屬性強(qiáng)調(diào)它們只有一個(gè)。
靜態(tài)修改的屬性、方法和代碼段與此類(lèi)的特定對(duì)象無(wú)關(guān)。即使不創(chuàng)建對(duì)象,也可以調(diào)用static修改的屬性和方法
static和“this,super”是不可調(diào)和的。Static與特定對(duì)象無(wú)關(guān),而super只與特定對(duì)象相關(guān)。
靜態(tài)無(wú)法修改局部變量。
最終靜態(tài)和最終靜態(tài)之間沒(méi)有區(qū)別。
static modified屬性強(qiáng)調(diào)只有一個(gè),final modified屬性表示它是一個(gè)常量(創(chuàng)建后不能修改)。static final modified屬性表示一旦給定值,就不能修改它,并且可以通過(guò)類(lèi)名訪問(wèn)它。
Static final還可以修改方法,以指示無(wú)法重寫(xiě)該方法,并且可以在不添加新對(duì)象的情況下調(diào)用該方法。