天天看點

關鍵字static和final

static 與final

1.變量的聲明和記憶體位址的開劈

 class A{

 }

 A   a;(這樣沒有開辟記憶體空間,隻有new對象時才有)

static關鍵字

靜态的 :可以用來修飾類,屬性,方法,代碼塊

1.屬性

如果用static來修飾,則變量的記憶體在靜态區。(被共享);

當屬性定義為static則該屬性為該類所有的對象共享,

以最後一次改變為所有對象裡的最終值;

static屬性,又叫類屬性

調用方式:1.可以通過對象調用;

 2.可以直接通過類名調用;

2.靜态方法:

static方法中不能調用非靜态屬性

(重寫失去意義)方法如果定義為static ,對象在調用方法的時候隻和對象定義的類型相關

static方法叫做類方法。這一類對象共享的方法;

調用方式:直接用類名調用;

 可以通過對象調用

一般情況下。static屬性和方法直接通過類名來調用;

3.代碼塊

public class A()[

 public static void main(String[] args){

  System.out.println("A");

 }

//代碼塊

 {

  System.out.println("b"); 

 }

 //靜态代碼塊

 {

  System.out.println("c"); 

 }

}

4.類前面。static修飾内部類;

java程式的執行過程!!!!

編寫:.java檔案-->翻譯成.class位元組碼檔案-->執行.class檔案

1首先       .class檔案加載到記憶體中(加載類)

 首先加載static屬性,靜态塊,靜态方法(不執行,隻加載);加載到類的記憶體空間

2.執行主函數    在建立這個類的對象時,(再将非靜态的方法,加載到對象的空間裡面),,,,将非靜态代碼塊,非靜态屬性執行

 在加載的過程當中,屬性和代碼塊會先執行,方法必先等到調用時在執行;

*****************************************************************************

final關鍵字

 final可以用來修飾類,屬性,和方法

 final,最終的,不可修改的

 類似于C語言裡的const

1.final修飾類的時候,表示該類不可以被繼承

2.final修飾方法時,不可以被重寫,可以重載;

3.final修飾屬性時,必須初始化并且隻能一次,不可以改變值;

class Student {

 public final String n;

 public Student(){

  n="S";

 } 

}

這樣定義也行,因為構造方法先實行(除了static修飾的方法和屬性之外)

4.final修飾局部變量,定義時可以不指派,但是隻能指派一次;

5.final 修飾參數,在參數前加final,,傳入方法後隻能用,不能改變。。(防止傳入的值被修改;)