JAVA基础3——常见关键字解读(1)
常見的JAVA中的關鍵字
static
static靜態變量
靜態變量:使用static關鍵字定義的變量。static可以修飾變量和方法,也有static靜態代碼塊。被static修飾的成員變量和成員方法獨立于該類的任何對象。也就是說,它不依賴類特定的實例,被類的所有實例共享。只要這個類被加載,Java虛擬機就能根據類名在運行時數據區的方法區內定找到他們。
static修飾的field字段,不管類初始化多少遍,此field對象只會初始化一次,且所有new出來的類對象中,對此static修飾的field字段進行操作,其余所有的類對象中的此field值都會被改變。
靜態變量的優勢:
A,靜態對象的數據在全局是唯一的,一改都改。如果你想要處理的東西是整個程序中唯一的,弄成靜態是個好方法。 非靜態的東西你修改以后只是修改了他自己的數據,但是不會影響其他同類對象的數據。
B,引用方便。直接用 類名.靜態方法名 或者 類名.靜態變量名就可引用并且直接可以修改其屬性值,不用get和set方法。
C,保持數據的唯一性。此數據全局都是唯一的,修改他的任何一處地方,在程序所有使用到的地方都將會體現到這些數據的修改。有效減少多余的浪費。
注意:static靜態變量是線程非安全的,靜態變量即類變量,位于方法區,為所有對象共享,共享一份內存,一旦靜態變量被修改,其他對象均對修改可見,故線程非安全。
static靜態方法
使用約束點:
靜態方法的多線程問題分析:
final
一言概之,final即為“最終的、最后的”的意思,使用final類似于一種顯式的聲明,強調這個final所修飾的內容是不可變更的。
對final修飾變量的情況具體說明如下:
final修飾變量為基本類型時
final修飾基本類型的變量的時候,此變量值不可變更,不可修改,不可重新賦值。
final修飾變量為基本類型時
final修飾引用類型的變量的時候,此變量不可被重新賦值,但是此變量的對象內容可以被修改??梢岳斫鉃閒inal固定了此變量指向的對象地址,但是對于此對象中的內容屬性,是可以修改的。
final的其它冷知識
更詳細的解釋,可以參考下http://www.cnblogs.com/dolphin0520/p/3736238.html,解釋的很到位,舉的例子也很好。
final 與 finalize() 區別
final關鍵字是用于標示不可修改、不可變更相關的含義,具體上面已經說明了。
finalize()是個方法名,Object對象默認提供一個protected類型的此方法。此方法盡量不要在代碼中主動去調用。
finalize()的功能 : 一旦垃圾回收器準備釋放對象所占的內存空間, 如果對象覆蓋了finalize()并且函數體內不能是空的, 就會首先調用對象的finalize(), 然后在下一次垃圾回收動作發生的時候真正收回對象所占的空間.finalize()有一個特點就是: JVM始終只調用一次. 無論這個對象被垃圾回收器標記為什么狀態, finalize()始終只調用一次. 但是程序員在代碼中主動調用的不記錄在這之內.
盡量避免使用finalize():
finally
常常與try...catch語句一起出現,用于保證try語句執行完成之后總會執行finally語句,在finally中常常進行一些資源釋放等操作。
即使在try語句中有return操作、或者出現某些沒有catch住的運行時異常需要提前退出的時候,也會執行finally語句。
看下下面這個代碼片段:
private static int test() {int i = 1;try{return i;}finally{i = 2;} } 執行結果: 1test()方法執行的返回值是1,即雖然在return之前會執行一下finally中的方法,但是在finally中對返回對象進行重新賦值操作是不會改變原有待返回的值的。
通常情況下,盡量避免在finally分支中進行賦值操作,因為也不會生效,主要是用于一些資源的釋放操作。
throw & throws
throw 是具體的語句拋出異常。
throws 是方法聲明的時候聲明可能拋出的異常時使用。
abstract
abstract 可以用于修飾類或者方法。
如果將一個類設置為abstract,則此類必須被繼承使用。此類不可生成對象,必須被繼承使用。 Abstract可以將子類的共性最大限度的抽取出來,放在父類中,以提高程序的簡潔性。 Abstract雖然不能生成對象,但是可以聲明,作為編譯時類型,但不能作為運行時類型。 Final和abstract永遠不會同時出現。
當abstract用于修飾方法時,此時該方法為抽象方法,此時方法不需要實現,實現留給子類覆蓋,子類覆蓋該方法之后方法才能夠生效。 如果方法想要聲明為abstract,則此方法所在的類必須也是abstract類型的。子類必須實現父類中的abstract方法, 否則編譯會報錯。
轉載于:https://www.cnblogs.com/veezean/p/7647687.html
總結
以上是生活随笔為你收集整理的JAVA基础3——常见关键字解读(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux中文档去掉windows文本的
- 下一篇: 智能小车37:异常在ARM、JAVA、硬