java中的static和final關鍵字


一:static

1)修飾成員變量:

static關鍵字可以修飾成員變量,它所修飾的成員變量不屬於對象的數據結構,而是屬於類的變量,通常通過類名來引用static成員。

當創建對象后,成員變量是存儲在堆中的,而static成員變量和類的信息一起存儲在方法區, 而不是在堆中,

一個類的static成員變量只有“一份”(存儲在方法區),無論該類創建了多少對象。看如下的示例

public class StaticDemo {

 

public static void main(String[] args) {

People p1 = new People(18);

People p2 = new People(19);

People p3 = new People(20);

}

 

}

 

class People{

private int age;

private static int num;

public People(int age) {

this.age = age;

System.out.print(++num);

}

}

結果輸出123,因為num存在方法區只有一份!

 

2)static修飾方法:

static修飾的方法不需要針對某些對象進行操作,其運行結果僅僅與參數有關,調用的話直接用類名就可以調用了。因此static方法中不能對非static成員進行訪問,

static方法的作用在於提供一些工具方法(如Arrays.sort)和工廠方法(有興趣可以了解靜態工廠模式)等

 

3)static塊:

屬於類的代碼塊,在類加載期間執行並且只執行一次,可以用來加載靜態資源。(如圖片、音頻和視頻等文件)

 

二:final

1)final修飾變量:

final意為不可改變,修飾成員變量時可以在生命時初始化或者在構造函數中初始化,修飾局部變量時在使用之前初始化。要是企圖改變final修飾等變量值則會編譯錯誤!

 

2)final修飾方法:

final修飾等方法不能被重寫。

 

3)final修飾類:

final修飾等類不能被繼承,jdk中的一些基本類庫被定義成final,例如String,Math,Integer等,這樣可以防止對系統造成危害。

 

三:static final

static final修飾的成員變量被成為常量,必須聲明時初始化並且不可被改變,static final常量在編譯期間會被取代為其初始值。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM