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():
強制啟動垃圾回收器