天天看點

java 5 個常用的api包

一、java.lang包下的API

Java常用基礎包,在開發中會自動導入到代碼環境中,不需要import。

1.基本資料類型/包裝類

(1)基本資料類型:byte、short、int、long、float、double、char、boolean

(2)包裝類:

Byte:–提供了将位元組資料轉換為其他類型的方法,從Number抽象類繼承過來.decode:将各種進制的資料内容的字元串,轉換為十進制辨別的位元組類型,數字進制的辨別符:無辨別符:按十進制轉換;ox、OX、#:按十六進制轉換;o:按八進制轉換.

Short、Integer –将short、Integer裝換為其資料類型的方法,從Number抽象類繼承過來。decode與Byte類中的decode方法一樣可進行不同進制的裝換。parseShort、parseInt、parseByte一樣,可以進行不同的進制裝換值。

注意:Integer十進制轉其他進制的方法:toBinaryString()、toHexString()、toOctalString()。

Float、Double –isInfinite():用于判斷數字是否有趨近無窮大,無法完整描述的情況。isNaN():判斷浮點資料是否為有效資料(浮點類型參與運算後用于判斷是否有效)

注:valueOf、parseXXX方法可以将字元串形式的值裝換為數字。

(3)包裝類與基本資料類型之間可以實作資料類型的自動轉換,即裝箱和拆箱。

java 5 個常用的api包
2.數學運算類:Math;其重要方法有:
java 5 個常用的api包

3.字元串類

(1)String:不需要通過new就可以直接建立String對象;+運算符可以用來拼接String内容.

方法:

          startsWith():字元串是否由指定字元開頭.

          endsWith():字元串是否由指定字元結尾.

          indexOf():傳回子串在父串中第一次出現的下标(從左起).

          lastIndexOf():傳回子串在父串最後一次出現的下标(從右起).

          split():按特殊字元拆分字元内容

          replace():用新字元串内容,替換父串中原有的字元串内容.

          matches():字元驗證方法。

    正規表達式:由一組通用的特殊字元所組成的一套字元串内容驗證規則,String通過matchs()方法來使用正規表達式驗證字元串内容是否合要求.

          文法-邊界比對器:

          ^:行的開頭,代表一個正規表達式的開始.

         $:行的結尾,代表一個正規表達式的結束.

         \b:辨別某一個單詞的開頭或結尾.

    字元:

        [abc]:a或b或c的任意一個.

        [^abc]:除a、b、c以外的任意字元.

        [a-zA-Z]:所有字母(大小都包括).

        [a-d[m-p]]:a到d或m到p([m-p]将該内容作為整體)

         [a-z&&[def]]:a-z和def兩個表達式都滿足.

         [a-z&&[^bc]]、[a-z&&[^m-p]]

         [0-9]

    預定義字元:

         .:代表任意字元.

         \d:字元内容隻能是[0-9]的數字.

         \s:空白字元.

         \w:所有字元大小寫、下劃線、數字

    反向字元:\D、\S、\W

    數量詞:?:一次或一次也沒有.

                     *:零次或多次.

                     +:一次或多次.

                     {n}:n代表一定要出現的次數

                     {n,m}:n<=出現次數<=m.

    拓展:

    零寬斷言\捕獲-是使用正規表達式來擷取字元串中對應内容的所在位置.(不能結合String的matchs方法),而應該結合String的replaceAll、replaceFirst方法使用,用來找到替換需要替換的内容)。文法:

    (?=exp):若字元串中有内容的結尾與exp比對,則滿足該斷言.

    (?<=exp):若字元串中的内容的開頭與exp比對,則滿足該斷言.

    (?!=exp):若字元中的内容的結尾與exp不比對,則滿足該斷言.

    (?<!exp):若字元串的内容的開頭與exp不比對,則滿足該斷言.
      

(2)StringBuffer:對于内容變動較大的字元串内容處理能力較好(線程安全)

java 5 個常用的api包

(3)StringBuilder:對于内容變動較大的的字元串内容處理能力較好(線程不安全 JDK1.5)

java 5 個常用的api包

(4) 其他程式的調用類:

java 5 個常用的api包

二、java.util包下的API

1.日期或時間類型:

(1)Date:java平台用于描述時間資訊(包括用于精确描述年、月、日、小時、分鐘、毫秒資訊)的基類;常用方法:

java 5 個常用的api包

3.基于經典資料結構的集合架構

集合對象:彌補傳統的數組在批量資料存儲中和通路上的不足,提供一組基于經典資料結構,并提供了對應操作方法的API來滿足程式設計開發中對批量資料的操作要求.

(1)Iterable(接口):JDK1.5以後加入的API,為集合架構滿足foreach語句提供類型的定義.

java 5 個常用的api包

ArrayList

特點:底層基于數組來實作清單的功能,内部用于存儲資料的結構是一個Object

https://blog.csdn.net/qq_41125219/article/details/Object%5b%5d%E6%95%B0%E7%BB%84%E7%9A%84%E9%BB%98%E8%AE%A4%E5%A4%A7%E5%B0%8F%E4%B8%BA10

建議:其ArrayList的初始化大小,盡可能根據實際操作資料的大小來設定(避免因數組增長導緻效率低下的問題).不善于對内容變動較大的集合資料提供存儲。
      

LinkedList

特點:底層基于連結清單的結構來實作存儲功能.(連結清單是非常靈活的順序存儲結構,基于指針,将資料互相串聯起來)。

java 5 個常用的api包

Vector

特點:是線程安全的API(讓多個同時執行線程有序的通路Vector中的資料,但會消耗相對應的記憶體)。

(4)Set:不包含重複元素的集合

java 5 個常用的api包

HashSet – 實作基于Hash表來維護資料,不保證資料的順序不變,但可以保證資料的唯一性。(儲存資料:通過Hash表來儲存資料,但不會儲存重複的資料)

TreeSet –按照二叉樹的結果來存放資料,保證資料的順序;采用紅黑樹(二叉樹):小的值放在左節點,大的值放在右節點.擷取資料時,采用中序通路節點,将資料内容按大小排列比大小:會使用對象的compareTo()方法比較兩個對象的大小由TreeSet儲存的對象,最好能提供對Compareble接口的實作,并給出compareTo方法的實作。

LinkedHashSet

特點:基于Hash表來存放資料,但會對資料的插入順序進行維護,按照資料放入Set集合的順序給輸出來,将對象在hash表中的hash值,按插入順序儲存在連結清單中,在生成的Iterator時,根據連結清單的結構一次通路擷取對象,操作性能較低,在大資料量的集合操作上不建議使用。

(5)Iterator :将資料有序的組織在一起,并提供按序通路的方法:

java 5 個常用的api包

(6)Map :基于鍵-值映射的關系來搭建存儲結構,在整個結構中使用key值來唯一辨別對象.(在JDK1.2之後出現用于替換原有API中的Dictionary類的作用)。常用方法: put(key,value)

java 5 個常用的api包

三、java.io包下的API

這個包下的api即java輸入輸出操作API,什麼是 輸入輸出操作?即向程式輸入資訊,向程式外部輸出資訊,資料被輸入或者是輸出的基礎機關是位元組byte,輸入輸出流按流的功能分可分為:
    低級流(節點流):自己具有流的寫入或者讀取能力的流.

    進階流(功能流):基于低級流的功能,實作流操作功能的擴張.
      

1.位元組流

(1)InputStream(輸入流) :表示位元組輸入流的所有類的超類,常用方法有:

available() :擷取總位元組數,擷取緩存區中的位元組個數

             close():負責釋放IO資源,關閉流操作.

             mark():在輸入輸出流的位元組位置上設标記,為後面reset反複讀取該段位元組做準備.

             reset():将流的操作重新定位

             markSupported():用于判斷mark方法或reset方法是否可用.

             int read():用于讀取一個位元組資訊:傳回值是讀取到的位元組,若讀到檔案末尾,則傳回-1.

             int read(byte[] b):将位元組讀入到byte[]數組中:傳回值是讀取到的位元組數,若讀到檔案末尾,則傳回-1.(将位元組讀取到byte[]數組中第off位開始之後的位置,讀取長度為len個位元組)
      

(2)OutputStream:表示輸出位元組流的所有類的超類,常用方法有:

java 5 個常用的api包

(3)FileInputStream extends InputStream –(檔案輸入流)

(4)FileOutputStreamextends OutputStream –(檔案輸出流),構造方法:FileOutputStream(Stringname,boolean append),其中append為ture時:追加内容到檔案尾部.

(5)FilterInputStream:輸入過濾流,負責在其他流基礎上擴充新的功能

(6)FilterOutputStream:輸出過濾流,負責在其他基礎上擴充新的功能.

(7)BufferedInputStream:為流操作提供位元組緩存,減少直接申請的IO讀取的次數;實作原理是在記憶體中建立了位元組數組,緩存位元組資訊.

(8)BufferedOutputStream :為流操作提供位元組緩存,減少直接申請IO寫出的次數.

(9)DataInputStream:以java基本資料類型的格式讀取資訊.

(10)DataOutputStream :以java基本資料類型的格式輸出資訊.

(11)ObectInputStream:對象流輸入,可以将對象資訊整體讀入.(注意:對象必須實作java.io.Serializable可序列化)

(12)ObjectOutputStream:對象流輸出,可以将對象資訊整體輸出(注意:對象必須實作java.io.Serializable可序列化).

注意:對象流使用的場景是大型資料的緩存,緩存一般會放在記憶體中。把資料量較大,且互動次數較低的資料放到檔案中儲存,再從檔案中将資料還原記憶體;或者放在分布式系統(通過網絡通信);如:發送遠端調用的請求資訊,遠端調用的處理結果.
      
java 5 個常用的api包

2.字元流

(1)Reader:表示字元輸入流的所有類的超類,常用方法有:read()、close()。

(2)Writer:表示字元輸出流的所有類的超類,常用方法有:write()、flush()、close()。

(3)BufferedReader/BufferedWriter:為流操作提供字元緩存,減少直接申請的IO讀取/寫入的次數。

拓展:File :系統上一個檔案資源,包括檔案(.txt、.exe、*.doc等)和檔案夾(用于組織和存放其他檔案資訊);作用:

擷取檔案夾的子檔案資訊—listFile()

擷取檔案的屬性,如getName() –擷取檔案的名字.

判斷是否為檔案目錄—isDirectory()傳回結果是ture為目錄,false為其他内容.

判斷是否為檔案—isFile()傳回結果是ture為檔案,false為其他内容.還可以修改檔案和删除檔案.

拓展:設計模式,是指在程式設計的開發過程中,被反複論證所總結出來的程式設計經驗.這些經驗被認定為解決具體問題的最佳方案.

eg:裝飾模式—面向對象的常用模式之一.符合開關原則:原有代碼不發生任何改變,而對原有代碼進行擴充,結構:

目标類(FileInputStream、FileOutputStream等)。

     裝飾類(BufferdInputStream、BufferedOutStream等),與目标類都有相同的父類或接口。

     用途:改進原有API的功能—修改原有的方法,豐富原有API的實作—能實作的功能更多。

     最純的裝飾模式:目标類和裝飾類從結構上一模一樣(BufferedInputStream\BufferedOutputStream)。

     裝飾的”另類”:對類的結構做出調整,如ObjectInputStream\ObjectOutputStream(readObject()\writeObject() )和DataInputStream\DataOutputStream( readXXX()\writeXXX() )。