第二天___②

課時8 構(gòu)造方法與匿名對象

實例化對象的格式
①類名稱 ②對象名稱 = ③new ④類名稱();
每一個點的目的

  • ①類名稱:任何對象都應(yīng)該有其對應(yīng)的類,因為沒有類就不知道對象具備的屬性、方法。
  • ②對象名稱:是一個唯一的標記,表示以后操作屬性、方法的標記。
  • ③new:開辟新的堆內(nèi)存空間。
  • ④類名稱():區(qū)別變量跟方法最直白的效果就是有沒有括弧。根類名稱相同的方法就應(yīng)該只有類的構(gòu)造方法,所以此處是在調(diào)用類的構(gòu)造方法。

通過以上的分析就應(yīng)該已經(jīng)清楚了所謂的構(gòu)造方法指的就是在使用關(guān)鍵字new實例化新對象的時候來進行調(diào)用的方法。

  • 構(gòu)造方法的定義也需要遵守如下原則:
    • 方法名稱必須與類名稱相同。
    • 構(gòu)造方法沒有返回值類型聲明。(連聲明都沒有!)
    • 每一個類中至少存在一個構(gòu)造方法,如果類中沒有定義任何構(gòu)造方法,則會生成一個無參的什么都不做的構(gòu)造方法。

以上我就可以理解為什么new 類名稱();的時候會執(zhí)行構(gòu)造方法中的代碼,其實這一步就是因為調(diào)用了類的構(gòu)造方法,構(gòu)造方法被調(diào)用后,里面的代碼塊執(zhí)行了。構(gòu)造方法是在new對象的時候才會調(diào)用。

  • 疑問:構(gòu)造方法中既然沒有返回數(shù)據(jù),那么為什么不加void,進行函數(shù)返回值聲明?
    • 首先一個類現(xiàn)在的組成是:屬性、方法、構(gòu)造方法。構(gòu)造方法是在使用關(guān)鍵字new的時候,同時調(diào)用的。而我們普通成員方法是在類實例化之后才能調(diào)用的。
      這里Java是通過結(jié)構(gòu)化的偏差來進行歸類的,而不是通過名字進行歸類。比如構(gòu)造方法(沒有方法的返回值聲明),方法在重載的時候,根據(jù)傳入?yún)?shù)的類型進行區(qū)分。

如果一個類中已經(jīng)定義的構(gòu)造函數(shù),那個默認的構(gòu)造函數(shù)將不再執(zhí)行。

  • 構(gòu)造方法的作用
    • 構(gòu)造方法的調(diào)用和對象的內(nèi)存分配幾乎是同時完成的。幾乎是與完全是并不是等價的,所以可以利用構(gòu)造方法設(shè)置類中的屬性內(nèi)容,直白點就是構(gòu)造方法可以為類中的屬性進行初始化處理。
    • 通過構(gòu)造方法設(shè)置內(nèi)容就可以避免重復(fù)的Setter調(diào)用。
      • 在實際開發(fā)中setter除了具備設(shè)置數(shù)據(jù)的功能,更主要承擔的角色就是修改內(nèi)容的操作。
  • 綜上構(gòu)造方法主要的作用就是對類中的屬性進行初始化。

既然構(gòu)造方法屬于方法,既然是方法就一定能進行重載。

在定義構(gòu)造方法重載的時候,需要注意一下定義結(jié)構(gòu)。我們再學(xué)程序的時候有一個規(guī)范化問題,什么叫做規(guī)范化呢?建議若干個構(gòu)造方法,按照參數(shù)個數(shù)的順序采用升序或降序排列。
同時注意在定義類的時候

  • 第一部分寫屬性
  • 第二部分寫構(gòu)造方法
  • 第三部分寫普通方法

所有的靜態(tài)屬性或方法應(yīng)該寫到成員屬性或方法之前。


匿名對象

圖片.png

上圖這種形式就是匿名對象的體現(xiàn)。
但是匿名對象有問題

  • 由于匿名對象不會有任何的??臻g所指向,所以我們使用一次之后,匿名對象就會成為垃圾空間。

課時9 簡單Java類

課時10 數(shù)組的定義與使用

所謂的數(shù)組就是一組相關(guān)類型的變量集合,并且這些變量可以按照統(tǒng)一的方式進行操作。數(shù)組本身屬于引用數(shù)據(jù)類型。既然數(shù)組是引用數(shù)據(jù)類型,這里面又會牽扯到內(nèi)存分配。
數(shù)組的語法有如下兩類

  • 動態(tài)初始化數(shù)組 聲明并開辟數(shù)組 => 數(shù)據(jù)類型[] 數(shù)組名稱 = new 數(shù)據(jù)類型[長度]
    • 當數(shù)組開辟空間之后,數(shù)組就可以通過來完成訪問,即:'數(shù)組名稱[索引]',數(shù)組索引從零開始。
    • 當數(shù)組采用動態(tài)初始化之后,該數(shù)組中的每一個元素都是對應(yīng)該數(shù)據(jù)元素的默認值。

如果數(shù)組訪問的索引超過了數(shù)組范圍那么會產(chǎn)生數(shù)組索引越界錯誤

圖片.png

下圖中對動態(tài)創(chuàng)建的數(shù)組進行賦值
圖片.png

在對數(shù)組進行操作的時候,因為數(shù)組的長度是可知的,所以循環(huán)次數(shù)也是可知的,故應(yīng)該是用for循環(huán)來進行數(shù)組遍歷。
Java動態(tài)取得數(shù)組長度的方式:數(shù)組名稱.length

  • 數(shù)組除了聲明并開辟數(shù)組空間的方式之外依舊有分布方式開辟數(shù)組空間的方法

圖片.png

***數(shù)組是引用數(shù)據(jù)類型,所以在使用數(shù)組的時候一定要進行開辟空間(實例化),如果沒有開辟空間的數(shù)組,一定會出現(xiàn)空指針錯誤


圖片.png

課時11 數(shù)組的定義與使用

既然數(shù)組時引用數(shù)據(jù)類型,所以數(shù)組也一定會發(fā)生引用類型傳遞?,F(xiàn)在的引用傳遞的本質(zhì)就是同一塊堆內(nèi)存空間,可以被不同的棧內(nèi)存空間所指向,與對象完全一樣。所有的引用傳遞都是一個套路。反過來說就是不同的棧內(nèi)存空間指向同一個堆內(nèi)存空間。

圖片.png

數(shù)組中[]只有在創(chuàng)建和使用數(shù)組的時候才會用到。

課時12 數(shù)組的定義與使用

  • 數(shù)組靜態(tài)初始化的套路,都是先根據(jù)參數(shù)開閉堆內(nèi)存空間,然后在使用索引對數(shù)組每一項的內(nèi)容進行設(shè)置。這種做法都叫做動態(tài)初始化。
  • 而數(shù)組在定義的時候可以同時設(shè)置內(nèi)容,這種初始化的方式就是靜態(tài)初始化。
    靜態(tài)初始化語法:
  • 簡化格式 : 數(shù)據(jù)類型[] 數(shù)組名稱 = {值1,值2,值3} => 但是并不提倡
  • 完整格式 : 數(shù)據(jù)類型[] 數(shù)組名稱 = new 數(shù)據(jù)類型[] {值1,值2,值3}
    我們之前有提過匿名對象的概念,而簡化格式不能構(gòu)成匿名數(shù)組,完整格式new 數(shù)據(jù)類型[] {值1,值2,值3}是可以算得上一個匿名數(shù)組的
    靜態(tài)初始化唯一的好處就是內(nèi)容已經(jīng)存在,不用再一一設(shè)置了。
    數(shù)組最大的缺陷就是長度固定。所以才需要通過一些數(shù)據(jù)結(jié)構(gòu),來實現(xiàn)一個類似于長度能動態(tài)改變的數(shù)組。

課時13 二維數(shù)組(不重要可跳過)

  • 正常情況下,我們通過一個索引就可以取得數(shù)組中唯一的一個記錄。這樣的數(shù)組可以理解為一維數(shù)組。
  • 二維數(shù)組
    圖片.png

    比如我們要確定這樣一個數(shù)組
    圖片.png

    我們就可以說這行是1列是5。
    所以二維數(shù)組的語法就是數(shù)組名稱[行索引][列索引],這樣的一個結(jié)構(gòu)就是表的結(jié)構(gòu)。
    二維數(shù)組是二維坐標系,三維數(shù)組如下:
    圖片.png

    二維數(shù)組語法
    圖片.png

    圖片.png

    由于輸出很麻煩,所以并不流行,只是作為一個概念,我們知道了就行。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 〇、前言 本文共108張圖,流量黨請慎重! 歷時1個半月,我把自己學(xué)習(xí)Python基礎(chǔ)知識的框架詳細梳理了一遍。 ...
    Raxxie閱讀 19,602評論 17 410
  • 第一章 對象導(dǎo)論 對象具有狀態(tài)、行為和標識。這意味著每一個對象都可以擁有內(nèi)部數(shù)據(jù)和方法,并且每一個對象都可以唯一地...
    niaoge2016閱讀 1,042評論 0 0
  • 當人生充滿不確定性的時候,也就充滿了希望。但太多不確定性的人,卻又容易迷失自我。一個人對自我的認識,總要有參照物。...
    更向遠行閱讀 216評論 0 0
  • 90后女孩初入職場1年間揮霍公款18萬雪晶 烏魯木齊90后女孩林某,新入職場就出手闊綽,在朋友圈里聲譽極高。而在她...
    細心小小閱讀 226評論 0 0
  • 《終身成長》整本書聽了不下3遍,反復(fù)的思考這本書能為我?guī)硎裁礃拥氖斋@?對現(xiàn)狀對未來的改變有什么啟發(fā)? ...
    SandyJiang閱讀 559評論 4 2

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