Java面試基礎篇——第七篇:淺析final關鍵字

Java有許多關鍵字,static和final這兩個是咱們必須掌握的,它們有不少種用法,並且在恰當的環境下使用它們,能夠提高程序運行性能,優化程序結構,如今咱們先來了解下final關鍵字。java

1. final關鍵字用法

final關鍵字能夠用來修飾類,方法,變量(局部變量和成員變量) ,用final關鍵字修飾的變量,只能進行一次賦值操做,而且在生存期內,不能夠改變它的值。編程

1.1 修飾變量

/**
 * @author Lee
 * @// TODO 2018/7/19-11:08
 * @description
 */
public class MapTest {

    public static void main(String[] args) {
        final int v1 = 1;
        final int v2;
        v2 = 2;
        final FinalTest test = new FinalTest(1);
        test.v = 4;
        System.out.println("v1:" + v1 + ",v2:" + v2 + ",v:" + test.v);

    }
}
class FinalTest {
    int v;
    public FinalTest(int v){
        this.v = v;
    }
}

在給v1賦初始值以後,v1的值不會再被修改。從v2能夠看到,final修飾的變量能夠不在聲明時賦值,便可以先聲明,後賦值。v是一個引用變量,當final修飾引用變量時,只是它的引用不可改變,可是引用對象的值是能夠改變的。安全

1.2 修飾方法

「使用final方法的緣由有兩個。第一個緣由是把方法鎖定,以防任何繼承類修改它的含義;第二個緣由是效率。在早期的Java實現版本中,會將final方法轉爲內嵌調用。可是若是方法過於龐大,可能看不到內嵌調用帶來的任何性能提高。在最近的Java版本中,不須要使用final方法進行這些優化了。」 ————《Java編程思想》性能

類的private 方法會被隱式的指定爲final方法。優化

1.3 修飾方法參數

若是變量是做爲參數傳入的,咱們怎麼保證它的值不會改變呢?這就用到了final的第二種用法,即在咱們編寫方法時,能夠在參數前面添加final關鍵字,它表示在整個方法中,咱們不會(其實是不能)改變參數的值this

final void  output(final int f){
        System.out.println(f);
    }

1.4 修飾類

final修飾的類是沒法被繼承的,若是一個類你永遠不會讓它繼承,就能夠用final進行修飾。final類中的成員變量能夠根據須要設爲final,可是要注意final類中的全部成員方法都會被隱式地指定爲final方法。在使用final修飾類的時候,要注意謹慎選擇,除非這個類真的在之後不會用來繼承或者出於安全的考慮,儘可能不要將類設計爲final類設計

總結

  • 1.final用來修飾數據,包括成員變量和局部變量,該變量只能被賦值一次且它的值沒法被改變。對於成員變量來說,咱們必須在聲明時或者構造方法中對它賦值;
  • 2.用來修飾方法參數,表示在變量的生存期中它的值不能被改變;
  • 3.修飾方法,表示該方法沒法被重寫;
  • 4.修飾類,表示該類沒法被繼承。

上面的四種方法中,第三種和第四種方法須要謹慎使用,由於在大多數狀況下,若是是僅僅爲了一點設計上的考慮,咱們並不須要使用final來修飾方法和類。code

相關文章
相關標籤/搜索