1. 程式人生 > >Java final ,static,native 關鍵字詳解

Java final ,static,native 關鍵字詳解

final 關鍵字

含義: 最終的,不可被改變的
用途: 用於修飾類、方法、屬性和變數。
特性:

  1. 用final修飾類時,被修飾的類不可以被繼承。final類中的所有成員方法都會被隱式地指定為final方法。
  2. 用final修飾方法時,被修飾的方法不能被重寫。在早期的Java版本中被final修飾的方法會轉為內嵌呼叫從而提升效能。(注:類的private方法會隱式地被指定為final方法。)
  3. 用fina修飾的變數,如果是基本資料型別的變數,則其數值一旦在初始化之後便不能更改;如果是引用型別的變數,則在對其初始化之後便不能再讓其指向另一個物件。(注:用fianl修飾的類屬性變數必須進行初始化(包括在構造方法中初始化))

static 關鍵字

含義: 靜態的,全域性的
用途: 用於修飾類、方法、變數和程式碼塊。
描述: static關鍵字表示靜態的,全域性的可以用來修飾類、方法、變數和程式碼塊。在通常的開發中最常見的是用static修飾的成員變數和成員方法,被static修飾的成員變數和成員方法獨立於該類的任何物件。也就是說,它不依賴類特定的例項,被類的所有例項共享。只要這個類被載入,Java虛擬機器就能根據類名在執行時資料區的方法區內定找到他們。因此,static物件可以在它的任何物件建立之前訪問,無需引用任何物件,可以通過類名加“.”進行直接訪問。
無論是變數,方法,還是程式碼塊,只要用static修飾,就是在類被載入時就已經"準備好了",也就是可以被使用或者已經被執行,都可以脫離物件而執行。反之,如果沒有static,則必須要依賴於物件例項。

特性:

  1. 如果一個類要被宣告為static的,只有一種情況,就是靜態內部類。靜態內部類可以宣告普通成員變數和方法,而普通內部類不能宣告static成員變數和方法。
  2. 用static修飾的程式碼塊也叫靜態程式碼塊,是在類中獨立於類成員的static語句塊,它不在任何的方法體內,可以有多個,位置可以隨便放,JVM載入類時會執行這些靜態的程式碼塊,如果static程式碼塊有多個,JVM將按照它們在類中出現的先後順序依次執行它們,每個程式碼塊只會被執行一次。
  3. 用static修飾的方法,只能呼叫static變數金額static方法,不能以任何形式引用this和super,是抽象方法abstract
  4. 用static修飾的變數,在定義時必須要進行初始化,且初始化時間要早於非靜態變數。

native 關鍵字

含義: 原生的,本地的
用途: 用於修飾方法
描述: native關鍵字用來修飾方法。被native關鍵字修飾的方法是一個原生態方法,方法對應的實現不是在當前檔案,而是在用其他語言(如C和C++)實現的檔案中。Java不是完美的,Java的不足除了體現在執行速度上要比傳統的C++慢許多之外,Java語言本身不能對作業系統底層進行訪問和操作(如系統硬體等),為此Java使用native方法來擴充套件Java程式的功能,通過JNI介面呼叫其他語言來實現對底層的訪問。