Java SE基礎(chǔ)2

1昭伸、Java類的成員變量:

Java類中的成員變量可以是任何一種數(shù)據(jù)類型(包括基本數(shù)據(jù)類型和引用數(shù)據(jù)類型)适秩;

在定義成員變量時(shí)可以對(duì)其進(jìn)行初始化巍佑,如果不進(jìn)行初始化斋配,Java會(huì)使用默認(rèn)值對(duì)其進(jìn)行初始化孔飒,如下圖灌闺。


成員變量的作用范圍是整個(gè)類體。

2坏瞄、Java類的構(gòu)造方法

在對(duì)象的創(chuàng)建時(shí)桂对,相當(dāng)于使用了new + 構(gòu)造方法來(lái)創(chuàng)建對(duì)象;

構(gòu)造方法與類同名且沒(méi)有返回值鸠匀,如果自己不定義構(gòu)造方法蕉斜,則系統(tǒng)默認(rèn)為其類提供一個(gè)形如類名 () { }的構(gòu)造方法(將所有基本數(shù)據(jù)類型初始化為0,引用類型定義為null)狮崩,如果我們定義了構(gòu)造方法蛛勉,系統(tǒng)則不會(huì)再為我們提供默認(rèn)的構(gòu)造方法鹿寻。

Java中構(gòu)造方法在調(diào)用時(shí)睦柴,構(gòu)造方法中的形參會(huì)在棧內(nèi)存中分配空間,當(dāng)構(gòu)造方法調(diào)用結(jié)束后毡熏,改椞沟校空間就會(huì)被清理。如下圖代碼:

在該方法中的main函數(shù)中痢法,當(dāng)生成一個(gè)tom對(duì)象時(shí)狱窘,內(nèi)存中的變化情況入下:


其中在棧內(nèi)存中,存放了tom對(duì)象的引用财搁,以及在構(gòu)造函數(shù)執(zhí)行過(guò)程中生成的椪赫ǎ空間,存放著兩個(gè)形參的內(nèi)存尖奔,在堆內(nèi)存中則存放了該對(duì)象的成員變量的信息搭儒,當(dāng)構(gòu)造函數(shù)執(zhí)行結(jié)束后,椞嶙拢空間中的_id與_age的就會(huì)被釋放掉淹禾。

看下面代碼中內(nèi)存的情況:

手畫了一下大概的內(nèi)存情況:


最后main方法執(zhí)行完成后,堆內(nèi)存中的start與end也被釋放了茴扁,然后Java的垃圾回收機(jī)制則會(huì)去清理堆內(nèi)存里的數(shù)據(jù)铃岔。

3、類:具有同一類事物的一個(gè)抽象峭火。 對(duì)象:一個(gè)類的一個(gè)特殊的實(shí)例毁习。

類與對(duì)象之間的關(guān)系:關(guān)聯(lián)、繼承卖丸、聚合(聚集纺且、組合)、多態(tài)和實(shí)現(xiàn)坯苹。

4隆檀、面向?qū)ο蟮脑O(shè)計(jì)思想:繼承、封裝、多態(tài)和抽象恐仑。

5泉坐、Java中用關(guān)鍵字class定義一個(gè)類;用new來(lái)創(chuàng)建一個(gè)對(duì)象裳仆;引用(對(duì)象的引用腕让,棧中的一小塊兒內(nèi)存指向堆空間的一大塊兒內(nèi)存。歧斟。纯丸。);new一般與構(gòu)造函數(shù)一起使用(和類重名静袖,沒(méi)有返回值)觉鼻。

6、方法重載(overload):在同一個(gè)類中队橙,方法的名字一樣坠陈,方法的參數(shù)類型或者參數(shù)個(gè)數(shù)可以不同。(構(gòu)造函數(shù)的重載)捐康。

在調(diào)用時(shí)仇矾,會(huì)根據(jù)不同的參數(shù)表選擇對(duì)應(yīng)的方法。(C++的靜態(tài)多態(tài)解总。贮匕。。)

7花枫、this關(guān)鍵字:this指的是當(dāng)前對(duì)象刻盐,在堆內(nèi)存中,存在一個(gè)自己的引用指向自身乌昔。(最常見是可以用于構(gòu)造函數(shù)隙疚,當(dāng)構(gòu)造函數(shù)中的傳參與類的屬性一樣時(shí)就可以使用如this.name = name這種寫法以區(qū)分。)this也可以看作是一個(gè)變量磕道,它的值是當(dāng)前對(duì)象的引用供屉。

8、static關(guān)鍵字:在類中溺蕉,用static聲明的成員變量為靜態(tài)成員變量伶丐,其為該類的公用變量,在第一次使用時(shí)被初始化疯特,對(duì)于該類的所有對(duì)象來(lái)說(shuō)哗魂,static成員變量只有一份,分配在數(shù)據(jù)區(qū)漓雅。

用static聲明的方法為靜態(tài)方法录别,在調(diào)用該方法時(shí)朽色,不會(huì)將對(duì)象的引用傳遞給它,所以static方法中不能訪問(wèn)非static的成員變量组题。(靜態(tài)方法不再是針對(duì)某個(gè)對(duì)象的調(diào)用葫男,所以不能訪問(wèn)非靜態(tài)成員。)

可以通過(guò)對(duì)象引用或者類名(不需要實(shí)例化)訪問(wèn)靜態(tài)成員崔列。

9梢褐、package和import語(yǔ)句

為了解決眾多類的命名沖突的問(wèn)題,Java引入package機(jī)制赵讯,提供類的多重命名空間盈咳。(包起名的方法:一般把公司的域名反過(guò)來(lái),這個(gè)類的class文件一定要位于正確的目錄下边翼,跟package的命名結(jié)構(gòu)一樣鱼响。)

使用時(shí),用import關(guān)鍵字引用讯私,引入單個(gè)類也可以热押,使用.*引入所有的類西傀。Java中可以不使用import語(yǔ)句就可以直接使用java.lang包中的類斤寇,比如最常見的System和String類。

在使用時(shí)一定要注意環(huán)境變量的classpath路徑拥褂,必須class文件的最上層包的父目錄位于classpath下娘锁。也可以將其打到一個(gè)jar包里,將jar包的路徑放到環(huán)境變量中(命令:jar -cvf xx.jar *.*)

10饺鹃、訪問(wèn)控制權(quán):private (default:什么都不寫) protected public

11莫秆、extends關(guān)鍵字:一個(gè)類從另外一個(gè)類繼承,繼承中子類繼承了父類的所有的成員變量以及所有的方法悔详,包括private變量镊屎,但是private成員變量不能用。

12茄螃、super關(guān)鍵字:使用super關(guān)鍵字引用基類的成分缝驳。

13、繼承中的構(gòu)造方法:

子類的構(gòu)造過(guò)程必須調(diào)用基類中的構(gòu)造方法归苍;

子類可以在自己的構(gòu)造方法中使用super(參數(shù)列表)調(diào)用基類的構(gòu)造方法(如果調(diào)用super用狱,必須寫在子類構(gòu)造方法的第一行,即先構(gòu)造父類然后構(gòu)造子類拼弃;可以使用this(參數(shù)列表)調(diào)用本類中另外的構(gòu)造方法夏伊。);

如果子類的構(gòu)造方法中沒(méi)有顯式地調(diào)用基類的構(gòu)造方法吻氧,則系統(tǒng)會(huì)默認(rèn)調(diào)用基類無(wú)參的構(gòu)造方法溺忧,如果基類沒(méi)有無(wú)參構(gòu)造方法咏连,則編譯會(huì)報(bào)錯(cuò)。

14鲁森、方法重寫(overwrite/override):

在子類中可以根據(jù)需要對(duì)基類中繼承的方法進(jìn)行重寫捻勉;

重寫方法必須和被重寫方法具有相同的方法名稱、參數(shù)列表和返回值類型(防止出錯(cuò)刀森,在基類中復(fù)制踱启。。研底。)埠偿;

重寫方法不能使用比被重寫方法更嚴(yán)格的訪問(wèn)權(quán)限。

15榜晦、final關(guān)鍵字:

final的變量值不能夠被改變冠蒋,類似C++的const(final成員變量,final局部變量乾胶,傳參)抖剿;

final的方法不能被重寫;

final的類不能被繼承识窿。

16斩郎、Java所有的老祖宗類,Object

Object類是所有Java類的根基類喻频,如果在類的聲明中未使用extends關(guān)鍵字指明其基類缩宜,則默認(rèn)基類為Object類;

toString方法:Object類中定義有public String toString()方法甥温,其返回值是String類型锻煌,描述當(dāng)前對(duì)象的有關(guān)信息,返回值是:類名+@+哈希code姻蚓;用戶可以根據(jù)需要在自定義類型中重寫toString()方法宋梧。

equals()方法:Object類中定義了public boolean equals(Object obj)方法,提供對(duì)象是否相等的邏輯比較狰挡;x.equals(y)當(dāng)x和y是同一個(gè)對(duì)象的引用時(shí)返回true捂龄,否則返回false;JDK中重寫了String和Date類中的equals方法圆兵,調(diào)用這些對(duì)象的equals方法時(shí)跺讯,當(dāng)兩個(gè)對(duì)象的是同一個(gè)類且對(duì)象的屬性內(nèi)容相等時(shí)(不要求是同一個(gè)對(duì)象),返回true殉农,否則返回false刀脏;用戶也可以根據(jù)需要重寫自定義類型中的equals()方法。

17超凳、upcasting:父類的引用指向子類對(duì)象愈污,接口的引用指向?qū)崿F(xiàn)了接口類的對(duì)象(C++中父類的指針指向子類) 反之downcasting

18耀态、多態(tài):實(shí)現(xiàn)多態(tài)的三要素 繼承、重寫和父類引用指向子類對(duì)象暂雹。

動(dòng)態(tài)綁定是指:在程序執(zhí)行期間首装,判斷所引用對(duì)象的實(shí)際類型,根據(jù)其實(shí)際的類型調(diào)用其相應(yīng)的方法(雖然傳入的是一個(gè)父類的名稱杭跪,但是引用所指向的是一個(gè)子類對(duì)象仙逻,所以在程序運(yùn)行時(shí)會(huì)調(diào)用子類重寫父類的方法而不是父類的方法)。

19涧尿、抽象類:

用abstract關(guān)鍵字來(lái)修飾一個(gè)類時(shí)系奉,這個(gè)類叫抽象類;用abstract來(lái)修飾一個(gè)方法時(shí)姑廉,該方法叫抽象方法缺亮;

含有抽象方法的類必須被聲明為抽象類,抽象類必須被繼承桥言,抽象方法必須被重寫萌踱;

抽象類不能被實(shí)例化,抽象方法只需聲明而不需實(shí)現(xiàn)(在子類中重寫實(shí)現(xiàn))号阿。(C++中純虛函數(shù))

20并鸵、接口interface:

接口是抽象方法和常量值定義的集合;從本質(zhì)上講倦西,接口是一種特殊的抽象類能真,這種抽象類中只包含常量和方法的定義而沒(méi)有變量和方法的實(shí)現(xiàn)(所以的方法都是抽象方法,并且都是public的扰柠,所有的成員變量都是public的static的以及final的);接口與接口之間可以相互繼承疼约,類和接口之間通過(guò)實(shí)現(xiàn)(implements)卤档。

接口的本質(zhì),在內(nèi)存中可以看到這個(gè)類的部分方法程剥,也就是調(diào)用接口本身定義的抽象方法劝枣。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市织鲸,隨后出現(xiàn)的幾起案子舔腾,更是在濱河造成了極大的恐慌,老刑警劉巖搂擦,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件稳诚,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡瀑踢,警方通過(guò)查閱死者的電腦和手機(jī)扳还,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門才避,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人氨距,你說(shuō)我怎么就攤上這事桑逝。” “怎么了俏让?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵楞遏,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我首昔,道長(zhǎng)橱健,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任沙廉,我火速辦了婚禮拘荡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘撬陵。我一直安慰自己珊皿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布巨税。 她就那樣靜靜地躺著蟋定,像睡著了一般。 火紅的嫁衣襯著肌膚如雪草添。 梳的紋絲不亂的頭發(fā)上驶兜,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音远寸,去河邊找鬼抄淑。 笑死,一個(gè)胖子當(dāng)著我的面吹牛驰后,可吹牛的內(nèi)容都是我干的肆资。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼灶芝,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼郑原!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起夜涕,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤犯犁,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后女器,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體酸役,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年倘感,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了宫补。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡极景,死狀恐怖暑塑,靈堂內(nèi)的尸體忽然破棺而出吼句,到底是詐尸還是另有隱情,我是刑警寧澤事格,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布惕艳,位于F島的核電站,受9級(jí)特大地震影響驹愚,放射性物質(zhì)發(fā)生泄漏远搪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一逢捺、第九天 我趴在偏房一處隱蔽的房頂上張望谁鳍。 院中可真熱鬧,春花似錦劫瞳、人聲如沸倘潜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)涮因。三九已至,卻和暖如春伺绽,著一層夾襖步出監(jiān)牢的瞬間养泡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工奈应, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留澜掩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓钥组,卻偏偏與公主長(zhǎng)得像输硝,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子程梦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容