Java學習day-07:面向?qū)ο?/h2>

一、面向過程和面向?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且只能有有一個,并且類名和文件名保持一致;

代碼截圖
代碼截圖
結(jié)果

5.屬性

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

6.方法

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

????//?n條語句

}

代碼截圖
結(jié)果

三、構(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)造器的方法名必須和類名一致。

代碼截圖
結(jié)果

四、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ū)也在堆中;

代碼截圖
結(jié)果
內(nèi)存分配圖

五、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)鍵字。

代碼截圖
結(jié)果

3.構(gòu)造方法的重載

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

代碼截圖
結(jié)果

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

代碼截圖
結(jié)果
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,639評論 1 32
  • 整理來自互聯(lián)網(wǎng) 1,JDK:Java Development Kit,java的開發(fā)和運行環(huán)境,java的開發(fā)工具...
    Ncompass閱讀 1,617評論 0 6
  • 一:java概述: 1,JDK:Java Development Kit,java的開發(fā)和運行環(huán)境,java的開發(fā)...
    慕容小偉閱讀 1,939評論 0 10
  • 一:java概述:1,JDK:Java Development Kit,java的開發(fā)和運行環(huán)境,java的開發(fā)工...
    ZaneInTheSun閱讀 2,810評論 0 11
  • 第6章類文件結(jié)構(gòu) 6.1 概述 6.2 無關(guān)性基石 6.3 Class類文件的結(jié)構(gòu) java虛擬機不和包括java...
    kennethan閱讀 1,069評論 0 2

友情鏈接更多精彩內(nèi)容