java語言基礎(chǔ)

0.方法簽名:方法名+參數(shù)列表

1.方法的重載(Overload):
(1)、方法名相同,參數(shù)列表不同,
(2)、在編譯器在編譯時(shí)根據(jù)方法的簽名自動(dòng)綁定調(diào)用方法

2.構(gòu)造方法:
(1)、給成員變量賦初值
(2)、沒有返回值類型
(3)、在創(chuàng)建對(duì)象時(shí)自動(dòng)調(diào)用
(4)、

3.this:
只能用在方法里,放在中訪問成員變量之前默認(rèn)有,當(dāng)成員變量與局部變量重名時(shí),this.不能省略

用法:this.成員變量名----------訪問成員變量
    this.方法名()-----------調(diào)用方法(一般不用)
    this()調(diào)用構(gòu)造方法

4:null和NullPointerException:
null:空,沒有指向任何對(duì)象
若操作發(fā)生NullPointerException:空指針異常

5:引用類型變量畫等號(hào):
(1)、指向同一個(gè)對(duì)象
(2)、通過一個(gè)引用對(duì)數(shù)據(jù)的修改會(huì)影響另一個(gè)引用對(duì)數(shù)據(jù)的值
基本類型變量畫等號(hào):
(1)、賦值
(2)、對(duì)一個(gè)變量的修改不會(huì)影響另一個(gè)變量的訪問

內(nèi)存管理:由JVM來管理的
(1)、堆:new出來的對(duì)象(包括成員變量)
(2)、棧:局部變量(包括方法參數(shù))
(3) 、方法區(qū):.class字節(jié)碼文件(包括方法)

回顧:
1、方法的重載:
(1)、發(fā)生在一個(gè)類中,參數(shù)列表不同,方法體不同
(2)、編譯器在編譯時(shí)根據(jù)方法的簽名自動(dòng)綁定調(diào)用的方法

2、構(gòu)造方法:
(1)、給成員變量賦初值、與類同名,沒有返回值類型
(2)、創(chuàng)建對(duì)象時(shí)被自動(dòng)調(diào)用
(3)、若自己不寫,則默認(rèn)無參構(gòu)造自己寫了則不再默認(rèn)無參構(gòu)造

3、this:
哪個(gè)對(duì)象調(diào)用方法指的就是那個(gè)對(duì)象
this.成員變量-------------------訪問成員變量
this.方法名----------------------調(diào)用方法
this()-------------------------調(diào)用構(gòu)造方法

4、null:空,沒有指向任何對(duì)象
引用的值為null

1、引用類型數(shù)組:
(1)、Student [] stus = new Student[10];
stus[0] = new Student();
stus[0].age = 25;

    Student [] stus = new Student []{
        new Student(),
        new Student(),
        new Student()
    }



基本類型變量---------------------裝具體的數(shù)
引用類型變量---------------------裝地址


(2)

    //聲明int[]的數(shù)組,包含3個(gè)元素
    //每個(gè)元素都是int[]型
    int [][] arr = new [3][];
    arr[0] = new int[2];
    arr[1] = new int[3];

    //給arr中第二個(gè)元素中的第一個(gè)元素賦值為100
    arr[1][0] = 100;

    arr-------------------------------int[][]
    arr[0]----------------------------int []
    arr[0][0]-------------------------int



(3) //數(shù)組的數(shù)組 

    int [][] arr = new int[3][];
    arr[0] = new int [2];
    arr[1] = new int [3];
    arr[2] = new int [2];
    arr[1][0] = 100;    //給arr第二個(gè)元素中第一個(gè)元素賦值100

    
(4)int [][] arr = new int[3][4];
    for(int i = 0;i<arr.length;i++){
        for(int j = 0;j<arr[i].length;j++){
            arr[i][j] = (int)(Math.random*100));
        }
    }

2、繼承:
(1)、作用:代碼復(fù)用
(2)、通過extends來實(shí)現(xiàn)繼承
(3)、超類/父類:所有派生類所共有的屬性和行為
派生類/子類:派生類所特有的屬性和行為
(4)、派生類繼承超類后,派生類具有:派生類的+超類的
(5)、一個(gè)超類可以有多個(gè)派生類,一個(gè)派生類只能繼承一個(gè)超類
(6)、繼承具有傳遞性
(7)、java規(guī)定:構(gòu)造派生類之前必須先構(gòu)造超類
派生類中若沒有調(diào)用超類的構(gòu)造方法,則默認(rèn)super()調(diào)用超類的無參構(gòu)造方法
派生類若調(diào)用了超類的構(gòu)造方法,則不再默認(rèn)

super()調(diào)用構(gòu)造方法,必須放在派生類構(gòu)造方法的第一句話。

3:super:指代當(dāng)前對(duì)象的超類對(duì)象
(1)、super.成員變量名---------------------訪問超類的成員變量
(2)、super.方法名()---------------------調(diào)用類的方法
(3)、super()----------------------------調(diào)用超類的構(gòu)造方法

1、向上造型:
(1)、超類型的引用指向派生類的對(duì)象
(2)、能點(diǎn)出來什么要看引用類型

2、方法重寫:
(1)、發(fā)生在父子類中,方法名相同,參數(shù)列表相同,方法體不同。
(2)、重寫方法被調(diào)用時(shí),看對(duì)象的類型
(3)、重寫遵循“兩同兩小一大”規(guī)則:
方法名稱相同,參數(shù)列表相同;派生類方法的返回值類型小于或等于超類返回值類型,派生類方法拋出的異常小于或等于超類方法 ;派生類的訪問權(quán)限大于或等于超類方法的訪問權(quán)限。

超類返回值是void和基本類型必須相等,引用類型可以小于等于

3、重寫與重載的區(qū)別------------面試題
(1)、重寫(Override):

發(fā)生在父子類中,方法名相同,參數(shù)列表相同
遵循“運(yùn)行期”綁定,看對(duì)象的類型來調(diào)用方法

(2)、重載
發(fā)生在一個(gè)類中,方法名相同,參數(shù)列表不同
遵循“編譯期”綁定,看參數(shù)/引用的類型來綁定方法

(重載看參數(shù)/引用的類型,重寫看對(duì)象的類型)

編譯期:java源文件,經(jīng)過編譯,生成.class字節(jié)碼文件
運(yùn)行期:JVM加載.class并運(yùn)行.class

1、package:避免類的命名沖突
包名可以有層次結(jié)構(gòu),同包中的類名不可以重名
域名反寫 . 項(xiàng)目名稱 . 模塊名稱 . 類名
類的全稱:包名.類名
建議:包名的字母全部小寫

import:(1)、同包中的類可以直接訪問
(2)、不同包必須用import

2、訪問控制修飾符:(數(shù)據(jù)私有化,行為公開化)
(1)、public:公開的,任何類
(2)、protected:本類,同包類,派生類
(3)、默認(rèn)的:本類,同包類
(4)、private:私有的,本類使用

說明:類的訪問修飾,只能是public或默認(rèn)的
類中的成員

3、final:最終的、不可改變的
(1)、修飾變量:變量不可改變
(2)、修飾方法:方法不能被重寫
(3)、修飾類:類不能被繼承

4、static:靜態(tài)的
(1)、靜態(tài)變量:
(1.1)、由static修飾
(1.2)、屬于類,存儲(chǔ)在方法區(qū)中,只有一份
(1.3)、常常通過類名點(diǎn)來訪問
(1.4)、何時(shí)使用:所有對(duì)象共享的數(shù)據(jù)

(2)、靜態(tài)方法:
    (2.1)、由static修飾
    (2.2)、屬于類,存儲(chǔ)在方法區(qū),只有一份
    (2.3)、常常有類名來調(diào)用
    (2.4)、靜態(tài)方法中不能直接訪問實(shí)例成員(沒有隱式this的傳遞),但可以訪問靜態(tài)成員
    (2.5)、何時(shí)用:方法的操作僅與參數(shù)相關(guān)而與對(duì)象無關(guān)
    
(3)、靜態(tài)塊:
    (3.1)、屬于類,在類被加載期間自動(dòng)執(zhí)行,因類只被加載一次,所有靜態(tài)塊只執(zhí)行一次
    (3.2)、何時(shí)用:加載/初始化靜態(tài)資源

1、static final常量:
(1)、必須聲明同時(shí)初始化
(2)、通過類名點(diǎn)來訪問
(3)、建議:常量名所有字母都大寫,多個(gè)單詞用_分隔
(4)、編譯器在編譯時(shí)將常量直接替換為具體的值,效率高
(5)、何時(shí)用:數(shù)據(jù)永遠(yuǎn)不變,并且經(jīng)常使用

2、抽象方法:
(1)、由abstract修飾
(2)、只有方法的定義,沒有方法體

3、抽象類:
(1)、由abstract修飾
(2)、包含抽象方法的類必須是抽象類(或接口)
(3)、抽象類不能實(shí)例化
(4)、抽象類是需要被繼承的,派生類:
(4.1)、重寫所有抽象方法---------------------常用
(4.2)、也聲明為抽象類-----------------------不常用
(5)、抽象類的意義:
(5.1)、可以封裝共有的屬性和行為--------代碼復(fù)用
(5.2)、為所有派生類提供統(tǒng)一的類型------向上造型
(5.3)、可以包含抽象方法,為所有派生類提供統(tǒng)一入口,派生類的具體行為不一樣,但入口是一致的

1、成員內(nèi)部類:
(1)、類中套類,外面的稱為Outer外部類,里面的稱Inter內(nèi)部類
(2)、內(nèi)部類通常只服務(wù)外部類,對(duì)外不具備可見性
(3)、內(nèi)部類對(duì)象通常只在外部類創(chuàng)建
(4)、內(nèi)部類可以直接訪問外部類成員(包括私有的)
內(nèi)部類有個(gè)隱式的

2、匿名內(nèi)部類:
(1)、若想創(chuàng)建一個(gè)類的對(duì)象,并且對(duì)象只被創(chuàng)建一次,此時(shí)該類不必命名,稱為匿名內(nèi)部類
(2)、匿名內(nèi)部類中若想訪問外面的變量,該變量是fianl(JDK1.7以前)
(3)、

MouseAdapter l = new MouseAdapter(){
public void mouseMoved(MouseEvent e){}

};

this.addMouseListener(l); //處理鼠標(biāo)操作事件
this.addMouseMotionListener(l); //處理鼠標(biāo)滑動(dòng)事件

1、接口:
(1)、由interface定義
(2)、數(shù)據(jù)類型只能是常量和抽象方法
(3)、是一種數(shù)據(jù)類型
(4)、接口不能被實(shí)例化
(5)、接口是需要被實(shí)現(xiàn)的,必須重寫接口中的所有抽象方法
(6)、一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,用逗號(hào)
(7)、接口可以繼承接口

2、設(shè)計(jì)規(guī)則:
(1)、將派生類所有的屬性和行為,抽到超類中----------抽共性
(2)、所有派生類的行為都一樣,設(shè)計(jì)普通方法
所有派生類的行為不一樣,設(shè)計(jì)抽象方法
(3)、將部分派生類所有的行為,抽到接口中

1、多態(tài):
(1)、意義:
(1.1)、行為多態(tài):同一類型的引用指向不同的對(duì)象時(shí),有不同的實(shí)現(xiàn)
(1.2)、對(duì)象多態(tài):同一對(duì)象被造型為不同類型時(shí),有不同功能

(2)、向上造型:
    (2.1)、超類型的引用指向派生類的對(duì)象
    (2.2)、能造型 成為的數(shù)據(jù)類型有:超類+所有實(shí)現(xiàn)的接口
    (2.3)、能點(diǎn)出什么,看引用的類型

(3)、強(qiáng)制類型轉(zhuǎn)換,成功的條件只有如下兩種:
    (3.1)、引用所指向的對(duì)象,就是該類型
    (3.2)、引用所指向的對(duì)象,實(shí)現(xiàn)了該接口

(4)、強(qiáng)轉(zhuǎn)若不符合如上條件,則發(fā)生ClassCastException類型轉(zhuǎn)換異常
建議:在強(qiáng)轉(zhuǎn)之前用instanceof來判斷

1、內(nèi)存管理:由JVM管理的
(1)、堆:
(1.1)、存儲(chǔ)new出來的對(duì)象(包括實(shí)例變量)
(1.2)、垃圾:沒有任何引用所指向的對(duì)象
垃圾回收(GC)不定時(shí)到內(nèi)存中清理垃圾
回收過程是透明的(看不到的)
不一定一發(fā)現(xiàn)垃圾就回收,通過調(diào)用System.gc()可以建議調(diào)度GC來回收
(1.3)、實(shí)例變量的生命周期:創(chuàng)建對(duì)象時(shí)存儲(chǔ)在堆中,對(duì)象被回收時(shí)一并被回收
(1.4)、內(nèi)存泄漏:不再使用的對(duì)象還沒有被即時(shí)回收
建議:對(duì)象不再使用時(shí),及時(shí)將對(duì)象設(shè)置為null
(2)、棧:
(2.1)、存儲(chǔ)正在調(diào)用方法中的局部變量(包括方法的參數(shù))
(2.2)、調(diào)用方法時(shí)會(huì)在棧中為該方法分配一塊對(duì)應(yīng)的棧幀,棧 幀中存儲(chǔ)方法中的局部變量(包括參數(shù))
方法結(jié)束時(shí),棧幀被清除,局部變量一并被清除
(2.3)、
(3)、方法區(qū):
(3.1)、存儲(chǔ).class字節(jié)碼文件
(3.2)、方法只有一份,用this.來區(qū)分具體調(diào)用對(duì)象

實(shí)例變量:
(1)、類中,方法外
(2)、創(chuàng)建對(duì)象時(shí)存儲(chǔ)在堆中,對(duì)象被回收時(shí)一并被回收
(3)、有默認(rèn)值

局部變量:
(1)、方法中
(2)、調(diào)用方法時(shí)存儲(chǔ)在棧中
(3)、沒有默認(rèn)值

面向?qū)ο笕筇攸c(diǎn):繼承、封裝、多態(tài)
1、封裝:
(1)、類:封裝的是對(duì)象的屬性和行為
(2)、方法:封裝特點(diǎn)的業(yè)務(wù)邏輯功能實(shí)現(xiàn)
(3)、訪問控制修飾符:封裝的是具體的訪問權(quán)限

2、繼承:
(1)、作用:代碼復(fù)用
(2)、超類:所有派生類所共有的屬性和行為
接口:部分派生類所有的共有的行為
派生類:派生類所特有的屬性和行為
(3)傳遞性:?jiǎn)我焕^承,多接口實(shí)現(xiàn)

3。多態(tài):
(1)意義:行為多態(tài):所有抽象方法都是多態(tài)的
對(duì)象的多態(tài):所有對(duì)象都是多態(tài)的
(2)、向上造型、強(qiáng)制類型轉(zhuǎn)換,instanceof判斷
(3)、多態(tài)的表現(xiàn)形式:
(3.1)、重寫:根據(jù)對(duì)象的不同來表現(xiàn)多態(tài)
(3.2)、重載:根據(jù)參數(shù)的不同來表現(xiàn)多態(tài)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,527評(píng)論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,687評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,640評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,957評(píng)論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,682評(píng)論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,011評(píng)論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,009評(píng)論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,183評(píng)論 0 290
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,714評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,435評(píng)論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,665評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,148評(píng)論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,838評(píng)論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,251評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,588評(píng)論 1 295
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,379評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,627評(píng)論 2 380

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