1. 程式人生 > >Java基礎(八)

Java基礎(八)

Java基礎 從入門到精通

(一)HashMap
(1)HashMap集合本身基於哈希表

它可以保證鍵的唯一性(Map都是針對鍵有效)
HashMap<String,String>

  • String:人的ID編號
  • String:人的姓名
    HashMap<Integer,String>

  • Integer:年齡
  • String:姓名

    HashMap<String,Student>

  • String:學號
  • Student:學號對應一個學生:有姓名和年齡
    HashMap<Student,String> 鍵:是一種自定義類型
    Student:學生:年齡和姓名
    String:朝代
  • 如果對象的成員變量值一樣,認為同一個人.

    *HashMap底層哈希表
    哈希表:依賴於兩個方法 hashCode() ,equals()方法
    (2)LinkedHashMap<K,V>
    LinkedHashMap<K,V>:是Map接口基於哈希表和鏈接列表實現的

    哈希表保證鍵的唯一性
    鏈接列表保證元素有序性(存儲和取出一致)

    (3)
    TreeMap基於紅黑樹結構的Map接口的實現

    (4)線程安全的類:

  • StringBuffer :字符串緩沖區
  • Vector :List集合
  • Hashtable :Map集合的
    (5)Collection
    Collectio 和Collections的區別:
  • Collection:頂層次單列集合的根接口,它是一個集合,是一個接口
  • Collections:是針對集合操作的工具類,有一些功能:隨機置換,集合裏面的二分查找,將集合的元素進行反轉
  • *集合的二分查找

  • public static <T> int binarySearch(List<T> list, T key)
  • static T max(Collection coll):獲取集合中的最大值
  • public static void reverse(List<?> list):將集合中的元素順序反轉
  • public static void shuffle(List<?> list):將集合中的元素打亂
  • public static void sort(List<T> list)
    (二)Exception
    (1) 當程序出現一些問題的,可以是嚴重問題,可以是一種異常,將這些通常為Throwable
    Throwable 類是 Java 語言中所有錯誤或異常的超類
  • Throwable
  • error
  • exception
  • 舉例:
    張三去山上旅行
    1)張三騎車去旅行,山路崩塌了,不能前行了----->不可抗力因素
    2)張三騎車去旅行,騎著發現輪胎沒氣了------->需要檢查的問題
    3)騎著,山路有石子,他就非得往石子上騎,導致車胎沒氣了---->自己原因造成的,no zuo no die

    不抗力因素----->error: 屬於嚴重問題 內存溢出了 (加載頁面中大量圖片的時候,程序會掛掉---使用第三方的框架去處理:ImageLoader)

  • 異常:
  • 編譯時期異常:只要出現的不是運行時期異常,統稱為編譯時期 日期的文本格式---解析 java.util.Date類型:ParseException:解析異常
  • 編譯時期異常:開發者必須處理!
  • 運行時期異常:RuntimeException
  • 編譯通過了,但是開發者代碼不嚴謹(NullPointerExceptino等等...)
    (2)異常的處理分為兩種:
    1)try...catch...finally (標準格式) :捕獲異常
    2)throws ... 拋出異常

    變形格式...
    try...catch...
    try...catch...catch...
    catch....

    try{
    一些代碼
    try裏面的代碼越少越好
    代碼包含了可能會出現問題的代碼
    }catch(異常類 異常類對象){
    try出現異常了,描述的異常剛好就是catch的異常類,就會執行catch裏面代碼
    //處理異常
    }
    (3)如何處理多個異常
    兩個或兩個以上的異常的時候怎麽辦?

    try{
    可能出現問題的代碼
    }catch(異常類 對象名){
    處理異常的代碼
    }

    try{
    可能出現問題的代碼
    int[] arr = {1,2,3} ;
    Sop(arr[3]);
    int a = 10 ;
    int b =0 ;
    Sop(a/b) ;

    }catch(異常類名1 對象名1){
    //異常處理
    }catch(異常類名2 對象名2(){

    //異常處理

    }
    dk7以後出現另一種方式處理多個異常
    try{

            可能出現問題的代碼;

    }catch(異常類名1 | 異常類名2 |... 對象名){

    處理異常

    }
    (4)編譯時期異常和運行時期異常的區別?

    編譯時期:開發者必須進行顯示處理,不處理,編譯不能通過,
    運行時期異常:無需進行顯示處理,可以像編譯時期一樣進行處理

    處理異常的第二種方式:使用throws 拋出異常 (跟在方法的後面)
    xxx 返回值 方法名() throws 異常類名{
    }
    標準格式 try{ ... }catch(異常類 對象){ // 異常處理 } 執行try裏面的代碼
    ,如果出現了問題,它會通過代碼的問題創建一個異常對象,然後通過異常對象和catch裏面的異常類是否一致
    如果一致的情況,就會出現catch裏面的代碼,執行Throwable裏面的方法

  • public String getMessage() :消息字符串
  • public String toString(): 異常的簡短描述 ":
  • ":由冒號和空格組成

  • public void printStackTrace():返回值void 直接調用, 包含了消息字符串,還有": "
  • 信息描述,具體出現異常的代碼定位以及定位的源碼上
    (5)throw:表示也是拋出異常,拋出的一個異常對象 (throw new 異常類名() :匿名對象的方式)
    try...catch...finally
  • finally語句體是一定會執行的,除非是Jvm退出了
    (6)自定義異常類,兩種方式
  • 1)自定義一個類,這個繼承自Exception
  • 2)繼承RuntimeException
    異常中的註意事項:
    子類繼承父類的時候的註意事項
  • 1)子類重寫父類的方法的時候,子類的方法的拋出的異常必須要麽是父類的方法異常一樣,要麽是父類方法異常的子類
  • 2)子類重寫父類方法的時候,如果父類中的這個方法沒有拋出異常,那麽子類重寫的這個方法也不能拋出異常,只能try...catch
    (三)File類
    (1)File類:表示文件或者目錄的路徑的抽象表現形式. IO流就是對文件進行操作的
  • public File(String pathname):表示pathname的抽象路徑表現的形式 (開發中使用這種方式)
  • public File(String parent,String child)
    根據 parent 路徑名字符串和 child 路徑名字符串創建一個新 File 實例
    public File(File parent, String child):根據一個file對象和一個文件路徑來構造File實例
    (2)跟創建相關的功能:
  • public boolean createNewFile():創建文件,當文件不存在的時候,創建此抽象路徑下的文件
  • public boolean mkdir():創建一個文件夾,如果文件夾存在,不創建
  • public boolean mkdirs():創建文件夾,如果父目錄不存在,會創建此目錄
    (3)刪除功能
  • public boolean delete() :刪除文件或者文件夾(目錄不能是空的) :逐一刪除文件或者目錄的

    如果創建一個文件/目錄,沒有寫盤符的時候,會創建在哪裏呢?
    會創建在當前項目路徑下
    (4)絕對路徑:c:\xxx\xxx.txt
    相對路徑:a.txt

    回想:html頁面(以後jsp頁面)
    後臺地址 :URI 統一資源定位符

    <form action="http://localhost:8080/Web工程名稱/後臺(XXX.servlet)"  metod="提交方式">
            用戶名:<input type="text" name="username"/>
            密碼:<input type ="password" name="pwd"/>
                <input type ="hidden" name="hid"/>
            <img src="圖片的路徑"/>
    </form>

    頁面的重定向/轉發
    response.sendRedirect("/工程名稱/xxx.jsp") ;

    File 的重命名功能:

  • public boolean renameTo(File dest)重新命名此抽象路徑名表示的文件。
    如果路徑名一致的情況,那麽只是重命名
    如果兩次路徑名稱不一致,那麽不只是重命名,並且剪切
    (5)File類的判斷功能
  • public boolean isDirectory():判斷是否是文件夾
  • public boolean isFile() :判斷是否是文件
  • public boolean canRead(): 是否可讀
  • public boolean canWriter():是否可寫
  • public boolean exists() :是否存在
  • public boolean isHidden():是否是隱藏文件
    (6)File類的獲取功能:
  • public String getAbsolutePath():獲取抽象文件的絕對路徑
  • public String getPath():獲取相對路徑的字符串
  • public String getName()返回由此抽象路徑名表示的文件或目錄的名稱
  • public long length()返回由此抽象路徑名表示的文件的長度。
  • public long lastModified():文件最後一次被修改的時間(時間毫秒值)
    (7)File的高級功能
  • public String[] list() :獲取當前某個路徑下的所有的文件夾以及文件名稱的字符串數組
  • public File[] listFiles() :獲取當前某個路徑下所有的文件夾以及文件的File數組
    (四)IO流
    (1)IO:在設備和設備之間的一種數據傳輸!
    IO流的分類:
    按流的方向分:
  • 輸入流: 讀取文件 (e:\a.txt):從硬盤上文件讀取出來後輸出這個文件的內容
  • 輸出流: 寫文件:將e:\a.txt 內容讀出來--->寫到f盤下
    按數據的類型劃分:
    字節流
  • 字節輸入流:InputStream :讀取字節
  • 字節輸出流:OutputStream :寫字節
    字符流
  • 字符輸入流:Reader :讀字符
  • 字符輸出流:Writer :寫字符
    (2)FileOutputStream
    關於字節輸出流寫數據的方法
  • public void write(int b):一次寫一個字節
  • public void write(byte[] b) :一次寫一個字節數組
  • public void write(byte[] b, int off,int len):一次寫一部分字節數組
    問題:如何末尾追加數據呢
  • public FileOutputStream(File file, boolean append):指定為true,末尾追加數據
    (3)FileInputStream
    構造方法: public FileInputStream(String name)讀數據方式:
  • public abstract int read():一次讀取一個字節
  • public int read(byte[] b):一次讀取一個字節數組 (讀取實際的字節數)
    (五)遞歸
    遞歸:只的是方法調用方法本身的一種現象
    Math類:max() 方法 Math.max(10,Math.max(15,20)); 方法嵌套

    舉例
    方法遞歸:

    public void show(int n){
        if(n<0){
            System.exit(0) ;//jvm退出了
        }
    
        System.out.println(n) ;
        show(n--) ;
    }

    方法遞歸的三個必要條件:

  • 1)方法遞歸必須有出條件
  • 2)必須滿足一些規律
  • 3)一定要寫方法
  • *註意:構造方法不存在方法遞歸的
    舉例
    從前有座山,山裏有個廟,廟裏有個老和尚和小和尚,老和尚給老和尚講了一個故事是:
    從前有座山,山裏有個廟,廟裏有個老和尚和小和尚,老和尚給老和尚講了一個故事是:
    從前有座山,山裏有個廟,廟裏有個老和尚和小和尚,老和尚給老和尚講了一個故事是:
    從前有座山,山裏有個廟,廟裏有個老和尚和小和尚,老和尚給老和尚講了一個故事是:
    條件結束:山塌了,或者和尚掛了

Java基礎(八)