1. 程式人生 > >Java學習筆記-類基礎

Java學習筆記-類基礎

  • Java學習筆記-類基礎


  • 類成員:

Java學習筆記-變數與常量

靜態成員:

作用:靜態資料與靜態方法提供共享資料和方法,遵循public,private,protected修飾符的約束

靜態資料的共享性:非靜態資料在一個類的不同物件中具有獨立性,而靜態資料在一個類的不同物件中共享,即一個物件對靜態資料的作用會體現在其他類中

方法體內的區域性變數不能宣告為靜態

靜態方法的約束:

a.在靜態方法中不能使用this關鍵字

b.靜態方法中不能直接呼叫非靜態資料在非靜態方法中可以呼叫靜態成員

靜態區域:

用於類的初始化,只會執行一次

//靜態區域
public class Example{
    static{
        //some
    }
}
  • 許可權修飾符:

private:

本類可見,同包其他類或子類,其他包的類或子類不可見

protected:

本類及同包其他類和子類可見,其他包的類和子類不可見

public:

全部可見

通過將成員變數宣告為private,繼承於該類的子類不可訪問該成員變數

預設訪問許可權:

宣告類時若沒有使用許可權修飾符設定許可權,則預設為protected

類許可權的約束性:

類的許可權設定會約束類成員的許可權,比如類許可權設定為protected,那麼類成員中設定為public將失去包外可見性

  • this關鍵字:

梗概:

作為本類的一個物件

作用:

a.呼叫成員變數和方法,在本類成員與其他變數或方法重名時指明所屬

b.呼叫構造方法

c.作為方法的返回值

  • 類的構造方法:

梗概:

構造類方法是一個與類同名的方法,用於物件的建立,每當類例項化一個物件時,類都會自動呼叫構造方法

語法:

//宣告構造方法
public ClassName{
    //內容
}

特徵:

a.構造方法沒有返回值

b.構造方法的名稱與本類名相同

c.在類中沒有定義構造方法時,編譯器自動建立一個不帶引數的預設構造方法。當類中已經定義了有參構造方法,編譯器不會再提供無參構造方法,需自行定義

d.this只可以在無參構造方法中的第一句呼叫有參構造方法

public class Example{
    String Data;
    public Example(){
        this("19980926");   //無參構造通過this呼叫有參構造
    }
    
    public Example(String str){
        Data=str;
    }
}
  • 類的主方法:

梗概:

主方法是類的入口,它定義了程式從何處開始;

主方法提供對程式流向的控制,Java編譯器是通過主方法來執行程式的

宣告語法:

public static void main(String[] args){

         //方法體         

}

特性:

a.主方法是靜態的,所以在主方法中呼叫的其他方法也必須是靜態

b.主方法沒有返回值

c.主方法的形參為陣列,其中args[0]~args[n]分別代表程式的1~n個引數,可以使用args.length獲取引數個數(初學者表示沒用過)

  • 物件的建立:

梗概:

物件是在一類事物中抽象出的某一個特例,每個物件都是互相獨立的,在記憶體中佔據獨立的記憶體地址(當然靜態成員是共享的),每個物件具有自己的宣告週期,在一個物件生命週期結束時,物件變成垃圾並由Java虛擬機器自帶的垃圾回收機制回收

建立物件:

Example name=new Example name();    //無參構造

Example name=new Example name(引數1,引數2,..引數n);   //有參構造

name物件被創建出來時,就是物件的一個引用,這個引用在記憶體中為物件分配了儲存空間,在建立物件時自動呼叫構造方法,所以物件的初始化和構造是被捆綁的

  • 物件的比較:

” == “運算子:

用於兩個物件引用的地址是否相等

equals()方法:

用於比較兩個物件所指內容是否相等

  • 物件的銷燬:

梗概:

在物件生命週期結束時,分配給該物件的記憶體地址將會被收回

Java虛擬機器眼中的垃圾:

a.物件引用超過其作用範圍,視為垃圾

b.將物件賦值為 null

finalize()方法:

垃圾回收器只能回收那些由new操作符建立的垃圾,如果某些物件不是通過new操作符在記憶體中獲取記憶體區域,這些物件可能不被垃圾回收機制所識別,所以Java中提供finalize(),Object類的方法

該方法被宣告為protect,使用者需在自己類中定義這個方法,如果類中存在該方法,在垃圾回收時會首先呼叫該方法,在下一次垃圾回收動作發生時,真正回收被物件佔用的記憶體,實際上finalize()是作為標記垃圾的一個方法,提示垃回收機制對該垃圾進行回收

註明:

垃圾回收或 finalize()方法在Java虛擬機器(JVM)記憶體損耗殆盡時不會執行

System.gc():

強制啟動垃圾回收器