一、面向過程和面向?qū)ο?/h3>1.面向?qū)ο笈c面向過程的區(qū)別:
面向?qū)ο缶哂腥筇卣?;封裝,繼承,多態(tài);面向?qū)ο笈c面向過程相輔相成; 面向?qū)ο笏枷敫鹾先说乃季S模式。我們首先思考的是“怎么設計這個事物?”
面向過程適合簡單,不需要協(xié)作的事務。
2.面向?qū)ο笏伎挤绞剑?/h4>
遇到復雜問題,先從問題中找名詞,然后確立這些名詞哪些可以作為類,再根據(jù)問題需求確定的類的屬性和方法,確定類之間的關(guān)系。
3.面向?qū)ο蠛兔嫦蜻^程的總結(jié):
(1)都是解決問題的思維方式,都是代碼組織的方式。
(2)解決簡單問題可以使用面向過程
(3)解決復雜問題:宏觀上使用面向?qū)ο蟀盐?,微觀處理上仍然是面向過程。
二、對象的創(chuàng)建,方法和屬性的調(diào)用
1.對象
(1)對象是一種數(shù)據(jù)結(jié)構(gòu),將數(shù)據(jù)和數(shù)據(jù)放在一起。內(nèi)存上,對象就是一個內(nèi)存塊,存放了相關(guān)數(shù)據(jù)集合。
(2)對象是具體的事物,類是對象的抽象;(抽出相似的東西)
? (3)對象的創(chuàng)建,new關(guān)鍵字;類名? 對象名=new 類名();
2.類
(1)類可以看成一類對象的模板,對象可以看成該類的一個具體實例。
(2)類是用于描述同一類型的對象的一個抽象概念,類中定義了這一類對象所應具有的共同的屬性、方法。
例如:天使的特征;1.帶翅膀,2.女孩,3.善良,4.頭上有光環(huán)。
3.類的定義方式
對于一個類來說,一般有三種常見的成員:屬性field、方法method、構(gòu)造器constructor。(可以定義多個或0個)
4.注意:
一個源文件里面必須要有一個public class且只能有有一個,并且類名和文件名保持一致;



5.屬性
? ? ? 屬性用于定義該類或該類對象包含的數(shù)據(jù)或者說靜態(tài)特征。屬性作用范圍是整個類體;在定義成員變量時可以對其初始化,如果不初始化,java會默認初始化。

6.方法
(1) 方法用于定義該類或該類實例的行為特征和功能實現(xiàn)。
[修飾符]??方法返回值類型??方法名(形參列表)?{
????//?n條語句
}


三、構(gòu)造方法
1.構(gòu)造器也叫構(gòu)造方法(constructor),用于對象的初始化。
聲明格式:
[修飾符]?類名(形參列表){
????//n條語句
}
(1)通過new關(guān)鍵字調(diào)用!!
(2) 構(gòu)造器雖然有返回值,但是不能定義返回值類型(返回值的類型肯定是本類),不能在構(gòu)造器里使用return返回某個值。
(3)如果我們沒有定義構(gòu)造器,則編譯器會自動定義一個無參的構(gòu)造函數(shù)。如果已定義則編譯器不會自動添加。
(5) 構(gòu)造器的方法名必須和類名一致。


四、JVM內(nèi)存結(jié)構(gòu)
Java虛擬機的內(nèi)存可以分為三個區(qū)域:棧stack、堆heap、方法區(qū)method area。
1.棧的特點:
(1)棧描述的是方法執(zhí)行的內(nèi)存模型。每個方法被調(diào)用都會創(chuàng)建一個棧幀(存儲局部變量、操作數(shù)、方法出口等)。
(2) JVM為每個線程創(chuàng)建一個棧,用于存放該線程執(zhí)行方法的信息(實際參數(shù)、局部變量等)。
(3)屬于線程私有,不能實現(xiàn)線程間的共享;
(4)棧的存儲特性是“先進后出,后進先出”
(5)棧是由系統(tǒng)自動分配,速度快!棧是一個連續(xù)的內(nèi)存空間。
2.堆的特點:
(1)堆用于存儲創(chuàng)建好的對象和數(shù)組(數(shù)組也是對象);
(2)JVM只有一個堆,被所有線程共享;
(3)堆是一個不連續(xù)的內(nèi)存空間,分配靈活,速度慢。
3.方法區(qū)特點:
(1)JVM只有一個方法區(qū),被所有線程共享。
(2) 方法區(qū)實際也是堆,只是用于存儲類、常量相關(guān)的信息。
? ?(3)用來存放程序中永遠是不變或唯一的內(nèi)容。(類信息【Class對象】、靜態(tài)變量、字符串常量等)
4.注意:
方法區(qū)也在堆中;



五、this關(guān)鍵字
1.this的本質(zhì)就是“創(chuàng)建好的對象地址”代表當前對象本身;
2.this最常的用法:
(1)?在程序中產(chǎn)生二義性之處;區(qū)分成員變量和局部變量,
(2)使用this關(guān)鍵字調(diào)用重載的構(gòu)造方法,避免相同的初始化代碼。但只能在構(gòu)造方法中用,并且必須位于構(gòu)造方法的第一句。
? (3)this不能用于static方法中;main方法中就不能使用this關(guān)鍵字。


3.構(gòu)造方法的重載
(1)構(gòu)造方法重載:方法名相同;參數(shù)的類型不同;參數(shù)的個數(shù)不同;參數(shù)的順序不同,


(2)this 關(guān)鍵字:代表當前對象本身,可以使用this區(qū)分局部變量和成員變量。

