Welcome to Yumao′s Blog.
Hello JavaSE API Day01
, 2012年03月09日 , Java Language , 评论 在〈Hello JavaSE API Day01〉中留言功能已關閉 ,

Java SE (java API) Day01

====================
Java API
Java 系統類庫
Java 類庫
Java 核心的API(最常用的API類)
字符串, 集合, IO, 線程, 網絡, 反射等
Swing(很少用)

API都是類文件, 在rt.jar中

1 String 字符串
  字符串是"不變模式", 字符串的使用體驗, 非常接近基本類型
  包裝類型也是"不變模式", Integer i= new Integer(1);

  String 字符串 = char[] + 操作(toUpperCase(), concat())
  類: 數據+相關的操作
  char數組只是數據, 沒有操作
  一串字符就是字符串: char[] , String, StringBuilder
  1 字符串"字面量(直接量)"都是String類型實例
    "字符串常量"
    public static final String TYPE = "car";
    /////////                  常量     字面量/直接量
    Stirng 內部就是一個char[].
  2 String API 有一個實現原則: 對象內容永遠不變
    也就是說: String對象永遠不變. 為性能提供極致的優化!
    String API 如果改變內容就返回新字符串, 否則返回原則字符串
  3 String 字面量(直接量), 如果相同, 會替換為同
    一個String對象的引用, 常量連接的結果也被優化
    為一個字符串.
    String s = new String("abc");
  4 String 的比較, equals, hashCode()
  5 String API (字符串的常用方法)
    這些方法如果返回String 一般是一個新String對象
    toString()  除外.
    字符串中的字符有序號, 從0開始.
    API 方法:
    charAt()
    length()
    trim()
    indexOf()
    lastIndexOf()
    endsWith()
    startsWith()
    substring(int start, int end)
    substring(int start)

    String str = new String(new char[]{'1','2','3'});
    char[] chs = str.toCharArray();

3 正則表達式: 負責的字符串匹配處理規則, 應用廣泛.
  學習建議: 1 要能夠讀懂"正則表達式"
           2 能夠寫出簡單的"正則表達式"
           3 不要過多的分配學習時間!
  可以應用於: java grep vi
  1 字符集: [1234] 表示 1,2,3,4 之一
            [^12] 表示除了 1,2
            [1-5] 表示 1,2,3,4,5
            [a-f] 表示 a-f 之間的
            [0-9a-fA-F] 表示:一個16進制字符

            0[xX][0-9a-fA-F]{1,8}
            [w]{8,15}
    預定義字符集:
            d : [0-9]
            . : 任意字符
            w: 單詞字符 [0-9a-zA-Z_]
            s: 匹配空白: 空格 t n r b p

            D
            S
            W

  2 {m,n} 數詞
       {n}
       {m,n}
       ? : {0,1}
       + : {1,}
       * : {0,}

  3 ^ 開頭
    $ 結尾

郵政編碼: ^[0-9][0-9][0-9][0-9][0-9][0-9]$
         ^[0-9]{6}$
         ^d{6}$

用戶名規則: ^w{8,10}$
電話號:  +86 13912345678
        ^(+86|0086)?s?d{11}$
身份證號碼: ^d{15}(d{2}[0-9xX])?$
一個點的坐標: ^d+(,s*|s+)d+$
            ^d+[,s]s*d+$
答案規則:^s*A?(s+|,s*)B?(s+|,s*)C?(s+|,s*)D?s*$
日期: 2011-01-30
       ^d{4}-d{2}-d{2}$
       ^d{4}(-d{2}){2}$

  IP 地址: 192.168.0.2
          ^d{1,3}.d{1,3}.d{1,3}.d{1,3}$
          ^d{1,3}(.d{1,3}){3}$
          ^(d{1,3}.){3}d{1,3}$

String 對正則表達式的支持
  .matches() 匹配正則表達式
  .split("[,s|]") 切分字符串為字符串數組
  .replaceAll()

Integer.parseInt() 轉換到字符串到整數: 如: "23"-> 23

String: char[] + 方法(操作, API功能)
StringBuilder: char[] + 方法(操作char[] 的內容)

char[]:字符序列, 只有字符數據, 沒有操作, 如果算法優秀, 性能最好
String: 內部包含內容不可變的char[], 表現為String對象不可變
       String包含操作(API方法), 是對char[] 操作, 但不改變原對象
       經常返回新的String對象, 很多String API提供了複雜的
       性能優化算法, 如: 靜態字符串池, 如果不需要操作返回原對象
StringBuilder: 內部也是一個char[], 但是這個數組內容可變, 並且自動
     維護擴容算法, 因為數據內容可變, 所以叫: 可變字符串.
     StringBuilder API 方法, 是動態維護char[]內容, 都可以改變
     char[] 內容.

StringBuffer VS StringBuilder

作業
  1 複習實現全部課堂案例代碼
  2 比較性能:
      a int i = 1; 重複 i=i+1
      b Integer i = 1; 重複 i=i+1;
  3 創建一個List集合, 添加多個測試數據
    使用Collections.sort() 實現排序.
    在排序結果中使用 Collections.binarySearch()
    查詢一個字符串的位置序號.
  4 測試集合HashSet 的全部方法.
    add()
    addAll();
    remove()等
  5 測試HashMap的全部方法
    put()
    get()
    remove()
    values() 等

  6 (選做)實現完整版MyArrayList.
   參考: MyArrayList

  參考: 數組版本的發牌洗牌 corejava.day06.card1.CardDemo
       集合版本的發牌洗牌 corejava.day06.card2.CardDemo
      MyArrayList 實現參考: corejava.day06.list

預習: 內部類, 異常

Code Package

课堂提纲教案

关键字:, , , , ,

评论已关闭