java 中的static關鍵字和final關鍵字的不同之處_java

來源:互聯網
上載者:User

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等等。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.