static
1.在類中,用static修飾的屬性,稱為靜態屬性。為這個類的所有對象所共有,存放在靜態存儲區,所有該類的對象都可以訪問且訪問的都是同一變量。可以用作計數器,來統計總共創建了多少個各類的對象。
2.在類中,用static 修飾的方法為靜態方法,在靜態方法中不可以訪問非靜態的屬性和方法,但在非靜態方法中可以訪問靜態方法和屬性;且static方法多態失效,不能使用this。
3.由於靜態屬性和方法是屬於該類的所有對象的,所以可以用類名.靜態屬性/方法名---來訪問。
4.static 還可以修飾代碼塊,在類加載的時候被執行1次,僅且一次。
final
(1)final標記的類不能被繼承
代碼如下:
final class T{}
class TT extends T{}//出錯,final類不能被繼承
(2)final標記的方法不能被子類重寫
代碼如下:
class T{
public final void function(){}
}
class TT extends T{
public void function(){}//出錯,final方法不能被子類重寫
}
(3)final標記的局部變量為常量
代碼如下:
final int x=10;
x=3//出錯,final標記的局部變量為常量,不能被賦值
(4)final標記的成員變量必須在聲明的同時賦值,或在該類的構造方法中顯示賦值(實例變量沒有默認值),然後才能使用。
如:
代碼如下:
class Test{
final int x=10;//聲明並賦值
}
//或者
class Test{
final int x;
Test(){
x=10;
}
(5)方法中定義的內置類只能訪問該方法內的final類型的局部變量,用final定義的局部變量相當於一個常量,它的生命周期長於方法運行的生命周期。
(6)將一個形參定義成final也是可以的,這就限制了在方法中修改形參的值范圍。
java中有許多的類為final類型:String ,Math等等。