華文慕課Java程序設(shè)計筆記

對象的自動清除

  • 對象回收是由垃圾回收線程負(fù)責(zé)
  • System.gc()方法可以要求系統(tǒng)進(jìn)行垃圾回收畸颅,僅僅是建議系統(tǒng)
  • java沒有“析構(gòu)方法”堰塌,但Object的finalize()有類似方法
  • 系統(tǒng)在回收時會自動調(diào)用對象的finalize()方法

protected void finalize() throws Throwable{}

  • 子類的finalize方法可以在里面釋放系統(tǒng)資源移稳,一般來說聚霜,子類的finalize方法中應(yīng)該調(diào)用父類的finalize方法效五。

內(nèi)部類與匿名類

內(nèi)部類

  • 定義在一個類的內(nèi)部
  • 使用分為內(nèi)部使用和外部使用
  • 內(nèi)部類總可以直接訪問外部類的字段及放啊
  • 內(nèi)部類總訪問外部類的字段可以用“外部類名.this.字段”的方式
  • 用static修飾內(nèi)部類噩茄,表明該內(nèi)部類實(shí)際是一種外部類
    • 因?yàn)樗c外部類的實(shí)例無關(guān)
    • 有人認(rèn)為static的類是嵌套類摄凡,不是內(nèi)部類


      內(nèi)部類的使用

匿名類

  • 它沒有類名续徽,在定義類的同時就生成該對象的一個實(shí)例,不取名字,直接用父類或接口的名字
  • 一次性使用的類
    例子:
new Handler(){
...
}

局部類

  • 同局部變量一樣亲澡,方法中的內(nèi)部類
    • 不能用public,private,protected,static修飾
    • 但可以被final钦扭,abstract修飾
  • 可以訪問器外部類的成員
  • 不能夠訪問該方法的局部變量,除非是final局部變量床绪。

Lambda表達(dá)式

  • 基本寫法
    • (參數(shù)) -> 結(jié)果
      例子:
(String s) -> s.lenth();
x -> x*x;
() -> {System.out.println("aaa")}
  • 大體上相當(dāng)于其它語言的”匿名函數(shù)”或”函數(shù)指針”
  • 在java中它實(shí)際上是“匿名類的一個實(shí)例”

裝箱

基本類型的包裝類

  • 它將基本類型包裝成Object
  • integer i = new Integer(10);

Integer i=10;
實(shí)際為:Integer i=Integer.valueOf(10);

拆箱

int a=i;
實(shí)際為:a=i.intValue();

枚舉

可以在enum定義體中客情,添加字段其弊,方法,構(gòu)造方法


image

注解

  • 又稱為注記膀斋,標(biāo)記梭伐,標(biāo)記,注釋
  • 是在各種語法要素上加上附加信息仰担,以供編譯器或其他程序使用
  • 常用注解:
    @Override 表示覆蓋父類的方法
    @Deprecated 表示過時的方法
    @SuppressWarnings 標(biāo)識讓編譯器不產(chǎn)生警告

引用與指針

  • 引用實(shí)質(zhì)就是指針
    但是它是受控的糊识,安全的
    比如:
    • 會檢查空指引
    • 沒有指針運(yùn)算
    • 不能訪問沒有引用到的內(nèi)存
    • 自動回收垃圾

(1) 指針 》引用類型,引用本身就相當(dāng)于指針,可以用來修改對象的屬性摔蓝,調(diào)用對象的方法
(2)指針運(yùn)算 》數(shù)組
(3)函數(shù)指針 》接口技掏,lambda表達(dá)式
(4)指向結(jié)點(diǎn)的指針 》對象的引用
(5)使用JNI

  • java Native interface
  • 它允許java代碼和其他語言寫的代碼進(jìn)行交互

基本類型的相等

基本類型:

  • 數(shù)值類型:轉(zhuǎn)換后比較
  • 浮點(diǎn)數(shù),最好不直接用==
  • Double.NAN==Double.NAN結(jié)果為false
  • boolean型無法與int比較
    注 valueOf() -128到127會有緩存项鬼,超過的話就沒有緩存了

枚舉類型

  • 內(nèi)部進(jìn)行了唯一實(shí)例化哑梳,可以直接判斷

引用對象

  • “==”是直接看兩個引用是否一樣
  • 如果要判斷內(nèi)容是否一樣,則要重寫equals方法
  • 如果重寫equals方法绘盟,則最好重寫hashCode方法鸠真,因?yàn)橐话阋詢?nèi)容的hashCode作為唯一性標(biāo)志
    [圖片上傳失敗...(image-845e09-1522336106762)]

String對象的特殊性

  • 判斷對象,一定不要用==龄毡,要用equals
  • 但是字符串變量及字符串常量會進(jìn)行內(nèi)部化吠卷,相同的字符串常量是==的


    String對象的特殊性

異常

  • 異常又稱為例外,差錯
  • 對應(yīng)著java運(yùn)行錯誤處理機(jī)制
    基本寫法:
try{
    語句組
}catch(Exception ex){
    異常處理語句組沦零;
}

java中處理異常

  • 拋出異常
  • 運(yùn)行時系統(tǒng)在調(diào)用棧中查找:從生成異常的方法開始進(jìn)行回溯祭隔,直到找到
  • 捕獲異常的代碼

異常的分類

  • Throwable
    • Error:JVM錯誤
    • Exception

多異常的處理

  • 子類異常要排在父類異常的前面
  • finally語句
    • 無論有無異常,都會執(zhí)行處理語句

受檢的異常

Exception分兩種

  • RuntimeException及其子類路操,可以不明確處理
  • 否則疾渴,稱為受檢的異常,受檢的異常,要求明確進(jìn)行語法處理,要么捕獲,要么拋出異常

自定義異常

創(chuàng)建用戶自定義異常類

  • 繼承自Exception類或某個子Exception類
  • 定義屬性和方法屯仗,或重載父類的方法
  • 對于異常搞坝,不僅要進(jìn)行捕獲處理,有時候還需要將異常進(jìn)一步傳給調(diào)用者魁袜,一變讓調(diào)用者也能感受到這種異常桩撮,這是可以在catch語句塊或finally

語句塊中采取以下三種方式:

  • 將當(dāng)前捕獲的異常再次拋出
  • 重新生成一個異常,并拋出
  • 重新生成一個新異常峰弹,該異常中包含了當(dāng)前異常的信息店量,如throw new Exception (“some message “,e)

斷言及程序的調(diào)試

斷言

  • assert 表達(dá)式
  • assert 表達(dá)式,信息
  • 在調(diào)試程序時,如果表達(dá)式不為true,則程序會產(chǎn)生異常鞠呈,并輸出相關(guān)的錯誤信息

    assert hypotenuse(3,4)==5:”算法不正確”融师;

它起到對程序的檢測作用

編譯及運(yùn)行

  • 只有在JDK1.4及以上的版本才可以使用斷言
  • 在運(yùn)行時,要使assert起作用粟按,則在運(yùn)行時诬滩,使用選項(xiàng)(-ea ,即-enableassetions)
    如 java -ea - classpath.Assertion

程序的測試及Junit

  • 在編寫程序代碼的同時霹粥,還編寫測試代碼來判斷這些程序是否正確,這個過程稱為“測試驅(qū)動”的開發(fā)過程
  • 在java的測試過程灭将,經(jīng)常使用Junit框架

測試函數(shù)

@Test來標(biāo)注測試函數(shù)
fail(info) :表示信息出錯
assertEqauls(arg1,arg2):表示程序要保證兩個參數(shù)相等
assertNull(arg):表示參數(shù)要為null

程序的調(diào)試

  • 語法錯誤(Syntax error):編輯疼鸟,編譯器發(fā)現(xiàn)
  • 運(yùn)行錯誤(Runtime error):異常處理機(jī)制
  • 邏輯錯誤(Logic error):調(diào)式(debug),單元測試(unit test)

程序的調(diào)試

  • 在IDE中庙曙,項(xiàng)目中點(diǎn)右鍵空镜,debug as
  • 進(jìn)入到調(diào)試視圖(debug perspective)

調(diào)試的手段

  • 斷點(diǎn)(breakpoint)
  • 跟蹤(trace)
  • 監(jiān)視(watch)

在很有可能有錯誤的地方設(shè)置斷點(diǎn),然后跟蹤

java基礎(chǔ)類庫

  • java.lang core
  • java.util
  • java.io
  • java.awt
  • java.net
  • java.sql

Object類

  • Object類是所有類的直接或間接父類
  • 讓所有的類有了一致性
  • equals()
    • ==是引用相等捌朴,equals是內(nèi)容相等
    • 如果覆蓋equals方法吴攒,一般也要覆蓋hashcode方法
  • getClass()方法是final方法,它返回一個對象在運(yùn)行時所對應(yīng)的標(biāo)識
  • toString返回對象的字符串表示
  • finalize用于在垃圾收集前清除對象
  • notify(),notifyAll(),wait()線程相關(guān)

System類

  • System.getProperty(String name)獲取特定的系統(tǒng)屬性值

線程

  • 進(jìn)程:一個程序的運(yùn)行
  • 線程:程序中單個順序的流控制稱為線程
    一個進(jìn)程中可以含有多個線程
    一個進(jìn)程中的多個線程

特點(diǎn)

  • 分享CPU(并發(fā)的或以時間片的方式)
  • 共享內(nèi)存
  • 線程體 — run()方法來實(shí)現(xiàn)的
  • 線程啟動后砂蔽,系統(tǒng)就自動調(diào)用run()方法

使用

  • 通過繼承Thread類
  • 通過向Thread()構(gòu)造方法傳遞Runnable對象
  • 可用匿名類實(shí)現(xiàn)Runnable或用lambda表達(dá)式
  • 線程池封裝
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末洼怔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子左驾,更是在濱河造成了極大的恐慌镣隶,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诡右,死亡現(xiàn)場離奇詭異安岂,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)帆吻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進(jìn)店門域那,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人猜煮,你說我怎么就攤上這事次员。” “怎么了王带?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵翠肘,是天一觀的道長。 經(jīng)常有香客問我辫秧,道長束倍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任盟戏,我火速辦了婚禮绪妹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘柿究。我一直安慰自己邮旷,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布蝇摸。 她就那樣靜靜地躺著婶肩,像睡著了一般办陷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上律歼,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天民镜,我揣著相機(jī)與錄音,去河邊找鬼险毁。 笑死制圈,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的畔况。 我是一名探鬼主播鲸鹦,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼跷跪!你這毒婦竟也來了馋嗜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤吵瞻,失蹤者是張志新(化名)和其女友劉穎葛菇,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體听皿,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡熟呛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了尉姨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庵朝。...
    茶點(diǎn)故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖又厉,靈堂內(nèi)的尸體忽然破棺而出九府,到底是詐尸還是另有隱情,我是刑警寧澤覆致,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布侄旬,位于F島的核電站,受9級特大地震影響煌妈,放射性物質(zhì)發(fā)生泄漏儡羔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一璧诵、第九天 我趴在偏房一處隱蔽的房頂上張望汰蜘。 院中可真熱鬧,春花似錦之宿、人聲如沸族操。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽色难。三九已至泼舱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間枷莉,已是汗流浹背娇昙。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留依沮,地道東北人涯贞。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓枪狂,卻偏偏與公主長得像危喉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子州疾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評論 2 355

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