1. 程式人生 > >API-正則表示式,包裝類,Date,SimpleDateFormat,Calendar

API-正則表示式,包裝類,Date,SimpleDateFormat,Calendar

正則表示式:
   (1)很多時候,我們都需要對一些字元進行匹配,查詢,替換等複雜的
            操作。我們可以通過"正則表示式"來幫助實現這些複雜操作。
   (2)正則表示式, 它是一個有“特殊意義”的字串,定義了一種"
           校驗規則"
常用字符集
  []:表示匹配括號內的一個字元
  [abc]:表示匹配abc中的任意一個字元
  [a-z]:表示匹配a-z中的任意一個字元
  [0-9]:表示匹配0-9中的任意一個字元
  [a-zA-Z0-9]:表示匹配這些字元中的任意一個字元
  [^a]:表示匹配除了a字元的任意一個字元 
  [a-z&&[^a]]:表示匹配a-z中除了a的任意一個字元
預定義字符集  
  .  :表示匹配任意一個字元
  \d :表示匹配任意一個數字字元,相當於[0-9]
  \w :表示匹配任意一個單詞字元,相當於[a-zA-Z0-9_]
  \s :表示匹配任意一個空格字元,相當與[\t\r\n\b]
  \D :表示匹配任意一個非數字字元 相當於[^0-9]
  \W :表示匹配任意一個非單詞字元,相當於[^a-zA-Z0-9_]
  \S :表示匹配任意一個非空格字元,相當於[^\t\r\n\b]
  
     一些特殊字元需要使用轉義字元:  "\"
 
數量詞: 
  X:表示字符集
  X?:匹配X 0個或1個
  X+:匹配X 1個或1個以上
  X*: 匹配X 0個或0個以上
  X{m}: 匹配X   m個
  X{m,}:匹配X   m個以上
  X{m,n}:匹配X  m到n個   

():分組
   ()將正則表示式的部分規則進行了劃分,可以使用|來進
       行選擇其中一組規則
   reg:手機號前帶有區號
      +861375651674
      0086 1375651674
   正則表示式:
      (+86|0086)?\\s?1\\d{10} 
      
    判斷一個字串是不是一個網址
    http://www.baidu.com
    https://www.baidu.com
    www.baidu.com
    www.baidu.cn
    www.baidu.com.cn
    www.baidu.net
    www.baidu.edu
 ^和$
     有時,我們想校驗一個字串是不是從頭到尾都符合一個規則校驗
     此時需要在正則表示式前後新增相應的符號:
  ^:新增在正則表示式前,表示要校驗的普通字串的開頭就
          必須符合規則
  $:新增在正則表示式後,表示要校驗的普通字串的末尾
          必須符合規則
          
  前後都有此符號時:考慮的普通字串的整體
          
  reg:
      "^[\\d]{6,8}"        
      
       "123456aaaaaaaaa"可以滿足上述正則表示式
  
       "[\\d]{6,8}$"
       "abc12345678" 可以滿足上述正則表示式
       
       "^[\\d]{6,8}$"
       "12345678"
       
   matchs(String regex):此方法驗證不了我們自定義新增的^或$
      因此當把正則表示式傳入方法內後,
      內部邏輯幫助添加了^和$ 
      
 總結:正則表示式 是一個靈活,邏輯性強的規則校驗語法。
          通常用於文字中
 ===============================
 包裝類:
    java語言是面向物件的語言,而基本資料型別的資料不是物件,但是
       有的時候我們需要研究使用基本資料型別的資料,需要將之轉換成物件來使用。
        這個時候,我們可以將基本資料型別包裝成 引用型別。
        
       每一個基本資料型別都對應一個包裝類:
    byte--->    Byte 
    short-->    Short
    int-->        Integer
    long-->        Long
    float-->    Float
    double-->    Double
    char-->        Character
    boolean-->    Boolean   
特點:
   (1)都是final修飾的
   (2)一經建立的物件裡的資料不可變 
常用構造器:
    Integer(int value)
       通過指定的基本資料型別的資料構建一個Integer物件
    Integer(String str)
        通過指定的字串的資料構建一個Integer物件   
常用方法:
    int intValue();
        作用是將包裝類的物件拆箱成基本資料型別
    static int parseInt(String s)
        作用是將字串轉成10進位制的基本資料型別
    static Integer valueOf(String s)
        作用是將字串轉成Integer物件
 
注意:將字串轉成基本資料型別時,有可能出現執行時異常:
    java.lang.NumberFormatException
包裝類的常量池:
       當將基本資料型別進行自動裝箱時,裝箱後的物件的字面值,如果
       是在-128~127之間,會先檢查常量池中是否有相同字面值的
       物件,如果有,則將常量池的物件的地址給引用變數。
       
總結:
    (1)八種包裝類都是final修飾
    (2)一經建立,物件內容不可變
    (3)Character和Boolean的父類是Object
             其他六種的父類是Number型別  
    
    BigDecimal:大數字型別  
       如果:想進行精確無誤差運算,我們可以使用BigDecimal型別
       提供了相應的加減乘除等功能方法進行精確運算。
===================================================

日期與時間
一、java中的時間:
   (1)java中採用標準類庫的Date型別時間。使用距離一個固定時間點的
      毫秒數的時間點來表示時間
   (2)固定時間點即紀元(UTC)。也就是1970年1月1日 00:00:00
   (3)UTC與GMT都是世界通用的時間格式   
   
   (javase:標準版本的jdk,即類庫為基本類庫
    javaee:企業版本的jdk,基本類庫滿足不了企業開發的需求,因此此jdk中,含有其他與企業開發相關的類庫
    javame:移動版本的jdk,jdk中含有與移動端開發的型別)
二、Date型別
    java.util.Date型別,封裝了日期與時間的資訊。 
       之後裡面的很多功能都棄用,漸漸的使用Calender型別來替代            
    
   (1)構造器
       Date():
             建立一個封裝當前系統時間的Date物件
       Date(long time):
              建立一個距離紀元time毫秒的Date物件
   (2)常用方法
      long getTime();
            返回距離紀元的毫秒數
      void  setTime(long time);
            修改時間物件的毫秒數
=========================
SimpleDateFormat:
     作用:此型別可以對Date進行格式化及其將字串轉成Date型別。            
  
常用構造器:
     SimpleDateFormat(String format):
          建立一個指定格式的SimpleDateFromat物件。
常用方法:
     String format(Date date)          
          作用是將引數date按照構造器裡的格式進行格式化成字串
     Date parse(String str)
          作用是將指定字串str轉變成Date型別 
     需要用try catch拋異常,java.text.ParseException   解析異常
常用格式:
      yy:
      yyyy: 年
      MM:月
      dd:日
      
      HH:時(24制)
      hh:時(12制)
      mm:分
      ss:秒
      a:上下午
      E:星期              
                   
練習: 計算自己已經生活了多少毫秒  
=======================================
Calendar:
 (1)是日曆型別,此型別封裝了有關於日曆的所有資訊。主要用於
        計算時間分量。
        時間分量:日期和時間的一部分有效值。
 (2)Calendar
        是一個抽象類,提供了一方法getInstance()來獲取一個通用的
        子型別物件,一般都是GregorianCalendar(格力高歷,陽曆)型別
        的物件。
 (3)時間分量常量:
     static int YEAR
     static int MONTH:日曆裡的月份是0-11。
     
     static int DATE
     static int DAY_OF_WEEK:預設從週日到週六,即1-7
     static int DAY_OF_MONTH
     .....
  (4)型別中提供了get(int field)方法,通過指定時間分量常量來獲取
          相應的時間分量的值 
  (5)提供了set(int field,int value),進行設定時間分量值
         
  (6)提供了add(int field,int value),用於對當前日曆資訊通過
          時間分量來計算value後的日曆資訊
          注意:value值如果是負數,向前推算。 
          
          
   其他方法:
     Date getTime():
          將日曆物件轉成Date物件
     void setTime(Date date);
          將指定date日期轉成日曆物件的資訊
          
     int getActualMaximum(int field)
          獲取指定時間分量的最大值 
          如:
             指定Calendar.MONTH,獲取的是11,即12月份
       Calendar.DATE,獲取的是當前日曆物件所在月天數的最大值