Java基礎系列--final關鍵字

來源:互聯網
上載者:User

標籤:不同   繼承   構造器   eth   static   對象   string類   pos   方法調用   

原創作品,可以轉載,但是請標註出處地址:http://www.cnblogs.com/V1haoge/p/8482909.html

一、概述

  final是Java關鍵字中最常見之一,表示“最終的,不可更改”之意,在Java中也正是這個意思。

  有final修飾的內容,就會變得與眾不同,它們會變成終極存在,其內容成為固定的存在。

二、作用

2.1 final修飾變數

  變數被final修飾就會變成為常量,常量被儲存在方法區中。

  變數一旦被final修飾,必須手動進行初始化,未進行初始化的final常量是無法通過編譯的。

  如果只有final修飾的變數的初始化可以採用:

    --定義時賦值

    --代碼塊賦值

    --構造器賦值

  如果被static和final同時修飾的變數的初始化可以採用:

    --定義時賦值

    --靜態代碼塊賦值

  一旦final變數被static修飾,那麼它就脫離了對象的組織(代碼塊、構造器都是對象的組織),升級為類的組織,所以需要在類層級的靜態代碼塊中進行初始化。

1 public class FinalTest {2     final int i = 1;3     int j = 2;4     static int m = 3;5     static final int n = 4;6 }

  或

 1 public class FinalTest { 2     final int i; 3     int j; 4     static int m; 5     static final int n; 6     { 7         i = 1; 8     } 9     static {10         n = 3;11     }12 }

  如果將上面的代碼改成:

1 public class FinalTest {2     final int i;3     int j;4     static int m;5     static final int n;6 }

  上面代碼第2行和第5行會報錯,原因就是未進行初始化。

  那麼我們總結下final和static的現象,用於區分二者:

    static修飾將內容脫離對象成為類成員。

    final修飾將內容改造成必須被手動初始化的成員,一旦賦值,不再改變。

  二者可以同時存在,各起各的作用。

2.2 final修飾方法

  被final修飾的方法,可以被子類繼承,但是不能被子類重寫,也就是說這個方法在此以後其內部的實現就是固定不變的了,不能被改變。

2.3 final修飾類

  被final修飾的類,被稱之為最終類,其不再擁有子類,不可再進行擴充,最常見的final類就是String類。

  String類被final修飾之後,其每個對象都是不變的,一旦定義就不再發生改變。

2.4 final修飾局部變數

  final修飾的局部變數,如果方法的參數被final修飾,那麼這個參數的值在從方法調用時賦值開始就不能再改變,不能被重新賦值(不能改成他值)。

  最常使用的地方就是局部內部類在存取方法的局部變數的情況下,這些局部變數就需要使用final修飾,因為當局部內部類訪問局部變數時,會放大局部變數的範圍,局部變數一般在方法結束時就失效了,但是卻有可能任然被內部類的對象持有使用。將該局部變數定義為final之後,它不再儲存於棧空間,而是儲存在方法區中,自然不會因為方法的結束而丟失。

1     public void outMethod(){2        final int s = 1;3         class innerClass{4             public void innerMethod(){5                 System.out.println(s);6             }7         }8     }

  如果去掉第2行的final,第5行就會報錯。

 

Java基礎系列--final關鍵字

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.