花了半天到一天又認(rèn)真讀了一下java核心技術(shù)中的類部分,感覺最近編程時(shí)候好多迷迷糊糊,“這樣對(duì)不對(duì)呢,試一試。怎么不對(duì)呢”這類的迷糊問題原來(lái)都早有定義。
main函數(shù)必須在主類中
一個(gè)class就是一個(gè)機(jī)器,要使用其中的方法,需要構(gòu)建這個(gè)類的實(shí)例。 一個(gè)class中如果定義構(gòu)造器,構(gòu)造器的類型是public 類名,類名就是原類名
一個(gè)類可以有多個(gè)構(gòu)造器,構(gòu)造器沒有返回值。
變量標(biāo)記為private,代表只有該類的方法才能使用這些變量,別的類的不可以 方法標(biāo)記為public,則別的類的方法都可以調(diào)用這個(gè)方法
訪問器方法:getname 更改器方法:setname 一般是:私有的數(shù)據(jù)域,共有的訪問器方法和更改器方法 、
靜態(tài)方法:private static的方法,不需要構(gòu)建實(shí)例就可以直接飲用
a,如果該方法不需要用對(duì)象的變量,只需要使用顯式參數(shù)就可以
b,如果這個(gè)方法只需要訪問類的靜態(tài)域。
對(duì)象變量:Java的對(duì)象變量相當(dāng)于C++的對(duì)象指針
構(gòu)造體:1. 必須與類同名
2.每個(gè)類至少有一個(gè)構(gòu)造體,默認(rèn)為無(wú)參構(gòu)造體
3.可以有0個(gè)或多個(gè)參數(shù)
4.沒有返回值
5.可以是private,protected或public,默認(rèn)為public
6.總是伴隨new關(guān)鍵字一同被使用
顯式參數(shù):類方法括號(hào)中的參數(shù)
隱式參數(shù):調(diào)用時(shí)出現(xiàn)在方法名前的類對(duì)象;方法定義中使用this關(guān)鍵字代表該隱式參數(shù)
基于類的訪問權(quán)限:某個(gè)類的方法可以訪問該類的任何一個(gè)實(shí)例的私有域
final實(shí)例域:將實(shí)例域定義為final,則在創(chuàng)建實(shí)例時(shí)必須初始化這樣的域;對(duì)于可變對(duì)象的變量,定義為final只表示該變量不能再引用別的對(duì)象,但當(dāng)前對(duì)象的內(nèi)部數(shù)據(jù)域仍可以修改。
靜態(tài)域:將域用static關(guān)鍵字修飾,表示該類的每一個(gè)實(shí)例中都有這個(gè)域的一份拷貝;靜態(tài)域?qū)儆陬?,而不屬于任何?dú)立的實(shí)例,每次對(duì)其進(jìn)行修改,則每個(gè)實(shí)例中的該域都會(huì)變成最新的值
常量:static + final
靜態(tài)方法:將類方法用static修飾,表示該方法不能向該類的實(shí)例實(shí)施操作;靜態(tài)方法沒有隱式參數(shù)(this);靜態(tài)方法只能訪問該類中的靜態(tài)域,不能訪問實(shí)例域;靜態(tài)方法通過類名直接調(diào)用,如Math.random();
Java使用值調(diào)用
方法參數(shù)有兩個(gè)類型:
1. 基本數(shù)據(jù)類型
2. 對(duì)象引用
對(duì)于基本數(shù)據(jù)類型參數(shù),方法并不能修改實(shí)參(因?yàn)橹嫡{(diào)用)
對(duì)于對(duì)象引用的參數(shù),形參與實(shí)參指向的是同一個(gè)對(duì)象位置,所以方法能改變?cè)搶?duì)象內(nèi)部的值,但不能使實(shí)參指向一個(gè)新的對(duì)象
重載:一個(gè)方法的簽名包括方法名及其參數(shù)列表,不包括返回值和訪問權(quán)限;重載就是具有相同方法名、不同參數(shù)列表的一組方法,由編譯器根據(jù)參數(shù)列表挑選匹配的方法進(jìn)行調(diào)用
默認(rèn)域初始化:如果沒有在構(gòu)造體中對(duì)域進(jìn)行顯式賦值,那么默認(rèn)地,數(shù)值域賦為0,布爾域賦為false,對(duì)象變量賦為null
默認(rèn)構(gòu)造體:如果在類定義中沒有顯式定義構(gòu)造體,那么默認(rèn)地,運(yùn)行時(shí)系統(tǒng)會(huì)提供一個(gè)無(wú)參的空構(gòu)造體
顯式域初始化:類定義中,在域定義時(shí)直接將初始值賦給該域
調(diào)用另一個(gè)構(gòu)造體:在一個(gè)構(gòu)造體中第一句使用this(…);可以調(diào)用另一個(gè)重載的構(gòu)造體
初始化塊:類定義中直接包含代碼塊,用于給域賦上初始值
對(duì)象構(gòu)造執(zhí)行順序:包含靜態(tài)塊、域初始化語(yǔ)句、初始化塊、多個(gè)構(gòu)造體
1. 所有數(shù)據(jù)域都被初始化為0、false或null
2. 按照類聲明中出現(xiàn)的次序依次執(zhí)行所有靜態(tài)塊
3. 按照類聲明中出現(xiàn)的次序依次執(zhí)行所有域初始化語(yǔ)句和初始化塊
4. 如果構(gòu)造體第一行調(diào)用了第二個(gè)構(gòu)造體,先執(zhí)行第二個(gè)構(gòu)造體的主體
5. 執(zhí)行本構(gòu)造體的主體
對(duì)象析構(gòu):Java不支持對(duì)象析構(gòu),由垃圾回收器統(tǒng)一回收不再被需要的資源
聯(lián)系客服