Java for Android 基礎API整理

NoobZhang發表於2016-11-10

API簡析

*application programming interface 應用程式設計介面

*一切能呼叫的東西

 

Java.lang包

         Lang=language

         語言包

         自動導包

                   String

                   System

                   Integer

 

Java.lang.object

Java.lang.String

Java.lang.stringBuilder

Java.lang.StringBuffer

正規表示式

Java.util.regex.pattern

Java.util.regex.Matcher

 

基本型別包裝類

Java.math.BigDecimal

Java.math.BigInteger

Java.text.DecimalFormat

Java.lang.Math

 

Java.util.data

Java.text.SimpleDtaFormat

Java.util.Calender

Java.util.GregorianCalendar

 

 

 

 

 

 

 

 

 

 

 

Java.lang.Object

*java的頂層父類

*一個類如果不繼承其他類

         預設繼承Object

         ClassA /*entends Object*/{

 

}

 

方法:

         toString()

                   獲得物件的字串表示

                   預設實現是

                            abcdef.day1301.Point@a123kjl

                            “型別名稱@記憶體地址”

                            如果需要,可以在子類中重寫這個方法

 

         equals(Objectobj)

                   當前物件與引數物件obj比較是否相等

a.equals(b)

 

Object中預設實現是:

 

比較物件的記憶體地址

This == obj

 

提示:

學號和年齡是int基本型別,用 == 比較

姓名和性別是String型別,用equals()比較

 

基本型別 == 表示值比較

String 型別 ==  地址比較 

 

Object類中 ==  equals 都表示儲存的物件的地址比較  只是equals在很多類中進行了重寫

在string中,先進行地址比較再進行值比較 可理解為值的比較

 

 

 

 

 

 

 

Java.lang.String

*封裝char[]陣列的物件

         *字串的字面值

                   *第一次使用一個字面值時

                   在“字串常量池”中新分配記憶體建立字串物件

                   *再次使用相同字面值時

                   直接訪問“常量池”中存在的物件,而不會新建

         *字串不可變

        

         建立物件

1.      byte[] a = {‘h’,’e’,’l’,’l’,’o’};

String s = new String(a);

2.      第一種建立方式的語法簡化

String s = “hello”;

        

         方法

         CharAt(intindex)獲得指定位置字元

         S= “abc”;

         CharC = s.charAt(2);

        

         ToUpperCase()變成大寫

         S= s.toUpperCase()

         Print(s);

 

         toLowerCase()變成小寫

 

         length()長度

        

         compareTo(Sting,anotherString)

         compareTolgnoreCase(Stringstr)忽略大小寫與另一字串按編碼表順序比較大小

         當前字串大,返回整數

         當前字串小,返回負數

         大小相同,返回0

 

         startsWith(Strings)          是否以指定的子串開頭或結尾

         s= "http://www.163.com"

         booleanb = s.startsWith("http://")

         endsWith(Stringsuffix)

 

         equals(ObjectanObject)

         equalsIgnoreCase(StringanotherString)

忽略大小寫,比較字串內容是否相同

        

         indexOf(Strings, int fromIndex) 從指定位置向後尋找,獲得指定子串的位置,不存在,返回 -1

         lastIndexOf(Strings) 從後向前尋找子串的位置

         indexOf(Strings)

         s= "abc abc abc";

         intindex = s.lastIndexOf("xxxxx");

 

         replace(charoldChar, char newChar)將指定的字元替換為新的字元                                                                                              s= "abc abc abc";

                                     Strings2 = s.replace('a', '-');

                                     System.out.println(s2);

                                    

substring(int a) 從 a 位置直到結束

                            s= "abcdefg";

                       Strring s2 = s.substring(3, 5);

                       System.out.println(s2);

                  

substring(int a, int b)  獲得 [a, b) 位置範圍的子串

trim()                           去除兩端空白字元

                                     s= "   a  bc  ";

                                     s= s.trim();

                                     System.out.println(s);

                                    

         getBytes()        unicode 轉為預設編碼格式的位元組陣列

         getBytes(字元編碼)        將 unicode 轉為指定編碼格式的位元組陣列

         String.valueOf(資料)        將任何資料轉為字串

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

         publicclass Test3 {

    publicstaticvoid main(String[] args) {

       Strings = "abc abc abc ";

       System.out.println(s);

       System.out.println("1位置字元:"+s.charAt(1));

       System.out.println("2位置字元:"+s.charAt(2));

       System.out.println("變大寫:"+s.toUpperCase());

       System.out.println("變小寫:"+s.toLowerCase());

       System.out.println("長度:"+s.length());

       System.out.println("xyz比大小:"+s.compareTo(" xyz"));

       System.out.println("是否以abc開頭:"+s.startsWith(" abc"));

       System.out.println("是否以bc結尾:"+s.endsWith("bc "));

       System.out.println("第一個bc的位置:"+s.indexOf("bc"));

       System.out.println("3位置向後找bc:"+s.indexOf("bc",3));

       System.out.println("從後向前找bc:"+s.lastIndexOf("bc"));

       System.out.println("找不存在的子串:"+s.indexOf("xxxx"));

       System.out.println("a替換成-:"+s.replace('a','-'));

       System.out.println("擷取6到末尾:"+s.substring(6));

       System.out.println("擷取[6,10]:"+s.substring(6,10));

       System.out.println("去除兩端空格:"+s.trim());

 

    }

}

 

執行結果:

abc abc abc

1位置字元:b

2位置字元:c

變大寫:ABC ABC ABC

變小寫:abc abc abc

長度:12

xyz比大小:65

是否以abc開頭:false

是否以bc結尾:true

第一個bc的位置:1

3位置向後找bc:5

從後向前找bc:9

找不存在的子串:-1

a替換成-:-bc-bc -bc

擷取6到末尾:c abc

擷取[6,10]:c ab

去除兩端空格:abc abc abc

 

 

Java.lang.StringBuilder Java.lang.StringBuffer

    *可變的字元序列

    *封裝char[]陣列物件

    *用來代替字串做高效率的字串連線

       sb.append(“abc”);

 

    建立物件

    1.無引數StringBuilder sb = StringBuilder();

    2.帶引數StringBuilder sb = StringBuilder(“abc”);

正規表示式 Regex

         *正確的字串格式規則 (百度“正規表示式大全”)

         s.matches()是否匹配

 

               正規表示式                                                        匹配的字串

         K                                                                            k

                     Abc                                                                        abc

                     [abc]                                                                      a,b,c

                     [abc][123]                                                            a1,a2,a3,b1,b2,b3…

 

                     [^a-zA-Z]                                                              排除字母

 

                   \d                                                                                數字

                   \D                                                                               排除數字

                   \w                                                                               單詞字元[a-zA-Z_0-9]

                   \W                                                                              排除單詞字元

                   \s                                                                                空白字元

                   \S                                                                                排除空白字元

                   .                                                                                   任意字元

                   [\u4e00-\u9fa5]                                                      中文範圍

                   [abc]?                                                                        0或1個  a,b,,c,

                   [abc]?[123]                                                               a1,b2,3,2,1

                   [abc]*                                                                        0到多個

                   [abc]+                                                                        1到多個a,b,aacccbb…

                   [abc]{3}                                                                      aaa,abc,bbb,acc

                   [abc]{3,5}                                                                  abc,abcaa,abcc

                   [abc]{3,}                                                                    3到多個

                   |                                                                                  或

              replaceAll(正規表示式, 子串)

                   將找到的匹配子串,替換為新的子串

              

              split(正規表示式)

                  用匹配的子串,拆分字串

                   abc,def,ghi,jkl

 

Java.util.regex.Pattern Java.util.regex.Matcher

         *Pattern封裝一個正規表示式

         *Matcher封裝正規表示式和要匹配的字串

 

         建立物件

                   Pattern  p =  Pattern.compile(正規表示式);

                   Matcherm  = p.matcher(要匹配的字串);

        

Matcher方法

         Find

                   向後查詢下一段匹配的子串

                   找到返回true

                   找不到返回false

        

         Find(intfrom)

                   從from位置向後查詢

 

         Group()

                   取出剛剛找到的子串

 

         Start()

         End()

                   取出剛剛找到的子串的起始位置和結束位置

                   End位置不包含(左閉右開)

基本型別包裝類

byte                             Byte

short                           Short

int                               Interger

long                             Long

float                             Float

double                         Double

char                             Character

boolean                      Boolean

 

java.lang.Number

         *數字包裝類的抽象類

         *子類:

                   Byte

                   Short

                   Integer

                   Long

                   Float

                   Double

                   BigDecimal

                   BigInteger

 

         方法

                   從包裝物件中取出被封裝的基本型別值

                   bytevlaue

                   shortValue

                   intVlaue

                   longValue

                   floatValue

                   longValue

                   floatValue

                   doubleValue

java.lang.Integer

         建立物件

                   1.IntergerI = new integer(10);

                   2.IntegerI = Integer.valueOf(10);

                            在Integer類中存在-128到127

                            共256個Integer快取物件

                            指定範圍內的值,直接訪問存在的快取物件

                            指定範圍外的值,新建物件

 

         方法

                   *從父類Number繼承的6個取值方法

                   *字串解析成int

                            Integer.parseInt(“255”);

                            Integer.parseInt(“11111111”,2);指定2進位制

                            Integer.parseInt(“377”,8);       指定8進位制

                            Integer.parseInt(“ff”,16);                  指定16進位制

                           

                   *進位制轉換

                            Integer.toBinaryString(255);  1111111          二進位制

                            Integer.toOctalString(255);   377                            八進位制

                            Integer.toHexString(255);        ff                       十六進位制

Java.lang.Double

建立物件

1.      Double d = new Double(3.14);

2.      Double d = Double.valueOf(3.14);

與new相同,都是新建物件

 

         方法

         *)從父類繼承的6個取值方法

         *)字串解析成double

                   Double.parseDouble(“3.14”);

                           

                            Inter.paeseInt()

                            Long.parseLong()

                            Short.parseShort()

                            Boolean.parseBoolean()

         *)判斷double的兩個特殊值 返回true flase

                   Infinity

                            Double.isInfinite(doubled);  判斷是否無窮大

                   NaN

                            Double.isNaN(Doubled);         判斷是否是NaN

 

*自動裝箱、自動拆箱

         *)自動裝箱

                   Integeri = 34;

編譯成:Integer i= Integer.valueOf(34);

封裝34物件 把記憶體地址賦給i

         *)自動拆箱

                   Inta = i;

                   編譯成:int a =i.intValue();

                  

                   i= i + 3;

                   編譯成:i =Integer.valueOf(i.intValue()+3);

                  

                   *自動拆箱要當心null值

Java.math.BigDecimal  Java.math.BigInteger

*BigDecimal做精確的浮點數雲端

*BigInteger 做超大整數運算

 

建立物件

         BigDecimal  bd = BigDecimal.valueOf(2);

 

方法

         Add(BigDecimalbd)

         subtract(BigDecimalbd)

         multiply(BigDecimalbd)

         divide(BigDecimalbd)               不支援無限迴圈小數 

divide(BigDecimalbg,保留位數,舍入方式)

 

                  eg:bd3 =bd1.divide(bd2,15,BigDecimal.ROUND_HALF_UP);

 

         舍入運算:

                   setScal(保留位數,舍入方式)

         取值:

                   *)從父類Number繼承的6個取值方法

                   *)toString()

Java.text.DecimalFormat

*數字格式工具

*數字-->數字格式的字串

*數字格式的字串-->數字

        

         建立物件:

         DecimalFormatf = new DecimalFormat(格式);

         格式:

                   “$###,###.000”

                   “\u00A4###,###.000”當地貨幣

                   參考DecimalFormat文件

 

         方法:

                   Format(數字)

                            數字格式化成字串

                   Parse(字串)

                            字串解析成數字

                   Setpattern(格式)

                            修改格式

Java.lang.Math

Math.PI

Math.E

 

Math.random()

Math.sqrt()

Math.pow(a,b)

Math.min()

Math.max()

Math.sin()

Math.cos()

Math.tan()

Java.util.Date

*封裝一個毫秒值

         毫秒值:1970-1-10點開始的毫秒值

*表示一個時間點

 

建立物件

1.      Date d = new Date();

封裝系統當前時間毫秒值

2.      Date d = newDate(90000000000000L);

封裝指定的毫秒值

 

方法:

         getTime()

         setTime(Longt)

                   存取內部封裝的毫秒值

         compareTo(Dated)

                   當前Date物件與引數Date物件比較大小

                   如果當前物件大,返回整數

                   當前物件小,返回負數

                   相同,0

Java.text.SimpleDateFormat

*日期格式工具

*date物件à日期格式字串

*日期格式字串àdate物件

建立物件

         SimpleDateFormatf = new SimpleSateFormat(格式)

         格式:

                   “yyyy-MM-ddHH:mm:ss”

                   “dd/MM/yyyy”

                   “yy-M-dH:m”

                   “yyyy年MM月dd日 HH:mm:ss”

 

方法

         Format(Date物件)

                   Date物件格式化成字串

         Parse(字串)

                   字串解析成date物件

         SetPattern(格式)

                   修改格式

Java.util.Calendar

*日曆的抽象父類

*內部封裝一個毫秒值

*Calendar提供一組時間運算方法

         建立物件

                   1.Calendarc = new GregorianCalendar();

                   2.Calendarc = Calendar.getInstance();

                            根據系統地區設定,可能會建立不同地區的當地曆法

 

         方法:

         Get(欄位)

                   獲取指定欄位的值,例如:

                   C.get(Calendar.YEAR)

                   c.get(Calendar.HOUR_OF_DAY)

         set(欄位)

                   修改指定欄位值

 

         getTime()

                   獲得表示相同時間的Date型別例項

         SetTime()

                   將時間設定為指定Date例項所表示的時間

Java.util.GregorianCalendar

*日曆子類

*羅馬歷,即“公曆”、“陽曆”

集合

*資料結構工具

*用來存放一組資料

 

  java.util 包

  ---------------------------

    Collection 介面

      |- List 介面

          |- ArrayList

          |- LinkedList

      |- Set 介面

          |- HashSet

          |- TreeSet

   

    Map 介面

      |- HashMap

      |- TreeMap

   

    Iterator 介面

    Collections 工具類

java.util.LinkedList

  * 雙向連結串列

  * 兩端效率高

 

  建立物件

  ---------------------------------

    LinkedList list = new LinkedList();

 

  方法

  ---------------------------------

    add(資料)                                                                   新增資料

                   add(int index, 資料)                 在指定位置插入資料

                   addFirst(資料)

                   addLast(資料)

                   getFirst()

                   getLast()

                   removeFirst()

                   removeLast()           

                   FIFO 操作 First InFirst Out,佇列操作 Queue

                                     offer(資料)                - addLast

                                     peek()                                   - getFirst

                                     poll()                                     -removeFist             

                   LIFO 操作 Last InFisrt Out,棧操作 Stack

                                     push()                                   - addFirst

                                     pop()                                              -removeFirst

                   get(int index)            - 獲得指定位置的值

                   contains(資料)                            - 判斷列表中是否存在與指定資料相等(equals)的值

                   set(int index, 資料)                            - 將指定位置設定為新的值

                   size()                                                        -獲得列表中資料的數量

                   remove(int index)    - 移除指定位置的元素,並返回被移除的資料

                   remove(資料)                              - 移除與指定資料相等的資料

                   clear()                                                     -清空

                   iterator()                             - 獲得新建的迭代器例項

java.util.ArrayList

============================================

  * 內部封裝一個陣列,資料儲存在陣列中

  * 訪問任意位置,效率高

  * 新增、刪除資料,效率可能會降低

 

  * ArrayList vs  LinkedList

     

      *)如果只在兩端運算元據,選擇LinkedList

 

  建立物件

  ------------------------------------

    1.ArrayList list = new ArrayList();

       

        內部陣列初始容量 10

   

    2.ArrayList list = new ArrayList(1000);

       

        內部陣列初始容量 1000

 

  方法

  ------------------------------------

與 LinkedList 相同,但是沒有兩端運算元據的方法

 

java.util.HashMap

  * 雜湊表,雜湊表

  * 存放“鍵值對”資料

  * 用來快速查詢資料

 

  * 鍵:

      *)不重複

      *)無序

     

      *)必須重寫 hashCode() 和 equals()

          *)equals()相等,hashCode()必須相同

          *)equals()不相等,hashCode()儘量不相同

     

 

  建立物件

  ------------------------------------

    HashMap map = new HashMap();

 

  方法

  ------------------------------------

    put(k, v)  放入鍵值對資料

    get(k)     用鍵獲得對應的值

    remove(k)  移除指定的鍵和它的值

                   containsKey(key)               是否包含指定的鍵

                   containsValue(value)是否包含指定的值

                   size()                                                                 有多少對資料

                   clear()                                                               清空

                  

                   keySet()                                                  獲得一個 Set 型別集合,包含所有的鍵

                   entrySet()                                               獲得一個 Set 型別結合,包含所有Entry

                   values()                                                   獲得集合,包含所有的值

java.util.TreeMap

  * 紅黑二叉樹

  * 用來快速查詢資料

  * 鍵:

      *)不重複

      *)有序,從小到大

     

      *)比較大小的兩種方式

          *)鍵實現 Comparable 介面

          *)在 TreeMap 上外接比較器Comparator(優先)

     

     

  建立物件

  ---------------------------------------

    1. TreeMap map = new TreeMap();

   

    2. TreeMap map = new TreeMap(比較器);

 

  方法

  ---------------------------------------

    * 與 HashMap 相同

|- Set 介面

  |- HashSet

  |- TreeSet

==========================================

  * HashSet 內部封裝一個 HashMap,

    資料作為鍵,存放在 HashMap 中

       

        *)不重複、無序

 

  * TreeSet 內部封裝一個 TreeMap,

    資料作為鍵,存放在 TreeMap 中

       

        *)不重複、有序,從小到大

 

  建立物件

  ----------------------------------

    HashSet set = new HashSet();

   

    TreeSet set = new TreeSet();

    TreeSet set = new TreeSet(比較器);

 

  方法

  ----------------------------------

    add(資料)

    remove(資料)

    contains(資料)

    clear()

    size()

    iterator()

Java.util.TreeMap

*紅黑二叉樹

*用來快速查詢資料

*鍵:

         *不重複

         *有序,從小到大

         *比較大小的兩種方式

                   *讓鍵實現Comparable介面

                   *在TreeMap上外接比較器Comparator

 

 

建立物件

1.      TreeMap map = new TreeMap

2.      TreeMap map = new TreeMap(比較器);

 

 

方法

         *與HashMap相同

Set介面  -Hashset  -Treeset

*hashSet內部封裝一個HashMap,資料作為鍵,存放在HashMap中

 

         *資料不重複,無序

*TreeSet內部封裝一個TreeMap,資料作為鍵存放在TreeMap中

         *不重複、有順序從小到大

        

建立物件:

         HashSet  set  =    new HashSet();

 

         TreeSet  set =     new TreeSet();

         TreeSet    set   =       new TreeSet(比較器);

 

 

 

 

 

for-each 迴圈

  * 對陣列遍歷或集合迭代器遍歷的語法簡化

     

  * 陣列

     

     for(int i=0;i<a.length;i++) {

         String s = a[i];

         //處理 s

     }

     

     ----

     

      for(String s :a) {

         //處理 s

     }

 

  * 集合

     

     for(Interator<String> it = list.iterator(); it.hasNext();) {

         String s = it.next();

         //處理 s

     }

     

     ----

     

     for(String s:list) {

         //處理 s

     }  

可變長引數

  * 陣列引數傳遞的語法簡化

 

     void f(int[] a) {

     }

 

     f(new int[]{9, 5, 2, 7})

     f(new int[]{9, 5, 2, 7, 1, 2, 3, 4, 5})

     f(new int[]{9, 5})

     f(new int[]{})

     

     --------------------------

     

     void f(int... a) {

         //a是 int[] 陣列

     }

     

     f(9, 5, 2, 7)

     f(9, 5, 2, 7, 1, 2, 3, 4, 5)

     f(9, 5)

     f()

列舉 Enumeration

  * 一組固定選項

  * 用來代替整數數字程式碼選項,

    提供型別安全的選項

 

     int TYPE_COLD=4343;

     int TYPE_HEAT=5345;

     int TYPE_NUCLEAR=26345;

     

     ...

     void f(int type)  {

         

     }

     

     ...

     f(Weapon.TYPE_COLD)

     f(Weapon.TYPE_HEAT)

     f(Weapon.TYPE_NUCLEAR)

     f(234234)

     

     ------------------------

     

     public enum WeaponType {

         COLD, HEAT, NUCLEAR

     }

     

  * 列舉本質就是一個類

  * 其中的列舉選項,是WeaponType 物件

     

     public static final WeaponType COLD=new WeaponType();

     

  *void f(WeaponType type) {

       

    }

   

   ...

   f(WeaponType.COLD)

   f(WeaponType.HEAT)

   f(WeaponType.NUCLEAR)

泛型

  * 是一種型別引數

 

     class A<Type> {

         Type t;

 

         void f(Type t) {

         }

 

         Type f() {

         }

     }

異常

*封裝錯誤資訊的物件

         錯誤資訊:

                   *)型別名稱

                   *)提示訊息

                   *)行號

 

  * 繼承結構

     

     Throwable

       |- Error      系統級錯誤

       |- Exception  可修復的錯誤

           |- 其他Exception

           |- RuntimeException

                |- NullPointerException

                |-ArrayIndexOutOfBoundsException

                |- ArithmeticException

                |- NumberFormatException

                |- ClassCastException

                |- InputMismatchException

                ...

 

  * 捕獲異常

     

     try {

         ...

         

     } catch(AException e) {

         

     } catch(BException e) {

         

     } catch(父型別Exception e) {

         

     } finally {

         

     }

 

 

  *throws

     

     *)設定異常丟擲管道

     

         void f() throws A,B,C,D {

         }

     

     *)RuntimeException 存在預設丟擲管道

    

     *)其他Exception,必須二選一:

         

         *)插管道

         *)捕獲

io

  *Input / Output

    輸入 / 輸出

 

  *java.io 包

     

     File

     RandomAccessFile

     

     InputStream / OutputStream

     FileInputStream / FileOutputStream

     BufferedInputStream / BufferedOutputStream

     DataInputStream / DataOutputStream

     PrintStream

     ByteArrayInputStream / ByteArrayOutputStream

     ObjectInputStream / ObjectOutputStream

     

     Reader / Writer

     InputStreamReader / OutputStreamWriter

     FileReader / FileWriter

     BufferedReader / BufferedWriter

     PrintWriter

     

 

 

 

 

 

 

 

 

 

 

相關文章