BD1 - Java 2-5 周五總結

We believe that writing is about content, about what you want to say – not about fancy formatting.
我們堅信寫作寫的是內容,所思所想,而不是花樣格式。
— Ulysses for Mac

關于收獲:

導圖:

導圖

抽象類和接口區別:

Abstract class Interface
實例化 不能 不能
一種繼承關系,一個類只能使用一次繼承關系。可以通過繼承多個接口實現多重繼承 一個類可以實現多個interface
數據成員 可有自己的 靜態的不能被修改即必須是static final,一般不在此定義
方法 可以私有的,非abstract方法,必須實現 不可有私有的,默認是public,abstract 類型
變量 可有私有的,默認是friendly 型,其值可以在子類中重新定義,也可以重新賦值 不可有私有的,默認是public static final 型,且必須給其初值,實現類中不能重新定義,不能改變其值。
設計理念 表示的是“is-a”關系 表示的是“like-a”關系
實現 需要繼承,要用extends 要用implements

一個類可以實現自多個接口:

類可以實現多個接口

類需要替代這兩個接口所定義的所有方法

重點說明: (用接口實現多重繼承)

Java不支持多重繼承原因

Java不支持多重繼承原因

多重繼承發生問題原因之一在于屬性(數據結構)沖突,也就是存儲空間的沖突。由于接口不與任何存儲空間相關聯,因此可以解決存儲空間沖突的問題

對于繼承的方法的沖突,當使用接口之后,由于接口只定義了方法的抽象,沒有具體的執行代碼,因此也不會發生代碼沖突的問題。

拓展示例:


示例
總結

對比補充:


普通方法和抽象方法
導圖

內部類:

在Java中,可以將一個類定義在另一個類里面或者一個方法(類成員函數)里面,這樣的類稱為內部類。廣泛意義上的內部類一般來說包括四種:

  • 成員內部類
  • 局部內部類
  • 匿名內部類
  • 靜態內部類
導圖
集合:

Java集合主要分三種類型:
Set(集) List(列表) Map(映射)

重點掌握的集合:

  • HashSet
  • ArrayList
  • LinkedList
  • HashMap

重點掌握的集合操作:
增、刪、改、查(遍歷)

HashSet:

import java.util.HashSet;
import java.util.Iterator;

public class HashSetTest {
    public static void main(String[] args) {
        HashSet<String> hashSet = new HashSet<String>();
        System.out.println("沒數據前直接打印原HashSet結構:");
        System.out.println(hashSet);
        System.out.println();
        
        // 增:
        for (int i = 0; i < 4; i++) {
            hashSet.add((char)(i+97)+"");
        }
        
        // 打印原set結構內容:
        System.out.println("直接打印原HashSet結構:");
        System.out.println(hashSet);
        System.out.println();
        
        // 刪:
        hashSet.remove("a");
        System.out.println("直接刪除數據后HashSet結構:");
        System.out.println(hashSet);
        System.out.println();
        
        // 查在遍歷中:
        // 第一種遍歷:
        System.out.println("測試第一種遍歷:");
        for(String str : hashSet){
            System.out.println(str);
        }
        System.out.println();
        
        // 第二種遍歷:
        System.out.println("測試第二種遍歷:");
        Iterator<String> iterator = hashSet.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }
}

HashSet輸出:

3

ArrayList:

import java.util.Iterator;
import java.util.ArrayList;

public class ArrayListTest {

    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        System.out.println("沒數據前直接打印原list結構:");
        System.out.println(list);
        
        // 增:
        for (int i = 0; i < 4; i++) {
            list.add((char)(i+97)+"");
        }
        System.out.println("直接打印原list結構:");
        System.out.println(list);
        System.out.println();
        
        // 刪:
        list.remove(1);
        list.remove("a");
        System.out.println("打印刪除數據后list結構:");
        System.out.println(list);
        System.out.println();

        // 查在遍歷中:
        // 第一種遍歷    
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        System.out.println();
        
        // 第二種遍歷
        for(String s : list){
            System.out.println(s);
        }
        System.out.println();

        // 第三種遍歷
        Iterator<String> iterator = list.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }
}

ArrayList打印:

4

LinkedList:

import java.util.Iterator;
import java.util.LinkedList;

public class LinkedListTest {
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<String>();
        System.out.println("沒數據前直接打印原list結構:");
        System.out.println(list);
        
        // 增:
        for (int i = 0; i < 4; i++) {
            list.add((char)(i+97)+"");
        }
        System.out.println("直接打印原list結構:");
        System.out.println(list);
        System.out.println();
        
        // 刪:
        list.remove(1);
        list.remove("a");
        System.out.println("打印刪除數據后list結構:");
        System.out.println(list);
        System.out.println();

        // 查在遍歷中:
        // 第一種遍歷    
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        System.out.println();
        
        // 第二種遍歷
        for(String s : list){
            System.out.println(s);
        }
        System.out.println();

        // 第三種遍歷
        Iterator<String> iterator = list.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }
}

LinkedList打印結果:

5

HashMap:

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;

public class HashMapTest {
    public static void main(String[] args) {
        HashMap<String, String> map = new HashMap<String, String>();
        System.out.println("沒數據前直接打印原HashMap結構:");
        System.out.println(map);
        
        // 增:
        for (int i = 0; i < 5; i++) {
            map.put(Integer.toString(i+1), (char)(i+97)+"");
        }
        
        System.out.println("直接打印原HashMap結構:");
        System.out.println(map);
        System.out.println();
        
        // 刪:
        map.remove("1");
        map.remove("2", "b");
        System.out.println("打印刪除數據后HashMap結構:");
        System.out.println(map);
        
        // 改(即增加同樣key的數據以覆蓋改變value的值)
        map.put("3", "cc");
        System.out.println("打印改3后HashMap結構:");
        System.out.println(map);

        // 查在遍歷中:
        // 第一種遍歷
        System.out.println("第一次遍歷");
        for(String s : map.keySet()){
            System.out.println(s+" : "+map.get(s));
        }
        
        // 第二種遍歷
        System.out.println("第二次遍歷");
        Iterator<String> iteratorSet = map.keySet().iterator();
        while(iteratorSet.hasNext()){
            String str = iteratorSet.next();
            System.out.println(str+" : "+map.get(str));
        }
        
        // 第三種遍歷
        System.out.println("第三次遍歷");
        for(Entry<String, String> entry : map.entrySet()) {
            System.out.println(entry.getKey()+" : "+entry.getValue());
        }
        
        // 第四種遍歷
        System.out.println("第四次遍歷");
        for(String str : map.values()){
            System.out.println(str);
        }

        // 第五種遍歷
        System.out.println("第五次遍歷");
        Iterator<Entry<String, String>> it = map.entrySet().iterator();
        while(it.hasNext()){
            Entry<String, String> entry = it.next();
            System.out.println(entry.getKey()+":"+entry.getValue());
        }
    }
}

HashMap輸出結果:

6

性能分析舉例:


性能分析

集合易錯特別說明:
BDHW - 7.30 集合

導圖

異常學習:

  • 理解異常概念
  • 運用try塊、catch塊和finally塊處理異常
  • 運用多重catch塊處理異常
  • 運用嵌套try catch塊處理異常
  • 運用throw 和 throws處理異常
  • 運用java編寫和使用自定義異常

進行異常處理:(通過5個關鍵字實現)

  • try catch finally
  • throw throws

finally:


finally示例

注意多重catch塊 異常 順序:
catch異常類 要先catch子類后父類

catch順序

所以 這樣錯:


catch順序錯

(IOException 是 FileNotFoundException的父類)

關于拓展:

Hadoop - 1介紹、環境搭建及配置

世界上所有的追求都是因為熱愛
一枚愛編碼 愛生活 愛分享的IT信徒
— hongXkeX

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

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,733評論 18 399
  • (一)Java部分 1、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨云閱讀 7,131評論 0 62
  • 一、基本數據類型 注釋 單行注釋:// 區域注釋:/* */ 文檔注釋:/** */ 數值 對于byte類型而言...
    龍貓小爺閱讀 4,285評論 0 16
  • 1.import static是Java 5增加的功能,就是將Import類中的靜態方法,可以作為本類的靜態方法來...
    XLsn0w閱讀 1,258評論 0 2
  • 01 愛和怕是人們最原始的兩類情感,古往今來情感又總是在愛與怕之間搖擺,在現在這個動蕩易變的VUCA時代里,這種搖...
    Sunny格桑花閱讀 886評論 0 2