1. 程式人生 > >14.01_常見物件(正則表示式的概述和簡單使用)

14.01_常見物件(正則表示式的概述和簡單使用)

14.01_常見物件(正則表示式的概述和簡單使用)

  • A:正則表示式
    • 是指一個用來描述或者匹配一系列符合某個語法規則的字串的單個字串。其實就是一種規則。有自己特殊的應用。
    • 作用:比如註冊郵箱,郵箱有使用者名稱和密碼,一般會對其限制長度,這個限制長度的事情就是正則表示式做的
  • B:案例演示
    • 需求:校驗qq號碼.

      • 1:要求必須是5-15位數字
      • 2:0不能開頭
      • 3:必須都是數字
    • a:非正則表示式實現

    • b:正則表示式實現

###14.02_常見物件(字元類演示)

  • A:字元類
    • [abc] a、b 或 c(簡單類)
    • [^abc] 任何字元,除了 a、b 或 c(否定) 單個字元,10代表的是兩個字元
      [a-d[m-p]] a到d或m到p:[a-dm-p] (即取並集)
      [a-z&&[def]] d、e、f(交集)
      [a-z&&[^m-p]] a到z,而非m到p:[a-lq-z]
    • [a-zA-Z] a到 z 或 A到 Z,兩頭的字母包括在內(範圍)
    • [0-9] 0到9的字元都包括
      ###14.03_常見物件(預定義字元類演示)
  • A:預定義字元類
    • . 任何字元。 只能代表任意一個字元
      \再字串中代表轉義字元,使用要用雙斜槓
    • \d 數字:[0-9]
      \D 非數字:[^0-9]
      \s 空白字元: [\t\n\x0B\f\r] \t水平製表 \x0B 垂直製表 \r換行
      \S 非空白字元:[^\s]
    • \w 單詞字元:[a-zA-Z _ 0-9] 注意下劃線也在
  • \W 非單詞字元: [^\w]
    ###14.04_常見物件(數量詞)
  • A:Greedy 數量詞
    • X? X一次或沒有 沒有指空格字元,而不是非x範圍內字元
    • X* X零次或多次 多次也包括1次
    • X+ X一次或多次
    • X{n} X恰好 n 次
    • X{n,} X至少 n 次
    • X{n,m} X至少 n 次,但是不超過 m 次
      如果X內有多個元素,那就是具有X元素的合

例:
String regex = “[ab]{1,6}”;
System.out.println(“aaaaabb”.matches(regex));
System.out.println(“ab”.matches(regex));
System.out.println(“abbbbb”.matches(regex));
System.out.println(“aaaabbbb”.matches(regex));

結果:
false
true
true
false

###14.05_常見物件(正則表示式的分割功能)

  • A:正則表示式的分割功能
    • String類的功能:public String[] split(String regex)
      對於分割的字元(串),通常是常見,普通的,沒什麼問題;

但是對某些特殊字元,如果字元(串)正好是正則的一部分,則需要轉義才能使用,

這些字元有 | , + , * , ^ , $ , / , | , [ , ] , ( , ) , - , . , \等, 因它們是正則表示式中的一部分, 所以如果想用該字元本身, 這些字元需要進行轉義才能表示它本身

所以指定分割的字元(串)時,最好不要包含用於正則表示式本身的字元,如上面的紅色字元;

  • B:案例演示
    • 正則表示式的分割功能

###14.06_常見物件(把給定字串中的數字排序)

  • A:案例演示
    • 需求:我有如下一個字串:”91 27 46 38 50”,請寫程式碼實現最終輸出結果是:”27 38 46 50 91”

###14.07_常見物件(正則表示式的替換功能)

  • A:正則表示式的替換功能
    • String類的功能:public String replaceAll(String regex,String replacement)
  • B:案例演示
    • 正則表示式的替換功能

###14.08_常見物件(正則表示式的分組功能)

  • A:正則表示式的分組功能
    疊詞 快快樂樂 快快樂樂平平安安
    String regex = “(.)\1(.)\2”;
    System.out.println(“快快樂樂”.matches(regex));
    \1代表第一組又出現一次 \2代表第二組又出現一次
    String regex = “(.)\1(.)\2(.)\3(.)\4”;
    System.out.println(“快快樂樂平平安安”.matches(regex));

疊詞 死啦死啦,高興高興

* 捕獲組可以通過從左到右計算其開括號來編號。例如,在表示式 ((A)(B(C))) 中,存在四個這樣的組: 
  •   1     ((A)(B(C))) 
      2     (A 
      3     (B(C)) 
      4     (C) 
    
      組零始終代表整個表示式。
    
  • B:案例演示
    a:切割
    需求:請按照疊詞切割: “sdqqfgkkkhjppppkl”;
    String s = “sdqqfgkkkhjppppk”;
    String regex = “(.)\1+”;
    String arr_s[] = s.split(regex);
    for(String as : arr_s )
    {
    System.out.println(as);
    }
    System.out.println(arr_s.length);
    輸出:
    sd
    fg
    hj
    k
    4

b:替換
需求:我我…我…我.要…要要…要學…學學…學.編…編編.編.程.程.程…程
將字串還原成:“我要學程式設計”。

###14.09_常見物件(Pattern和Matcher的概述)

  • A:Pattern和Matcher的概述
  • B:模式和匹配器的典型呼叫順序
    • 通過JDK提供的API,檢視Pattern類的說明

    • 典型的呼叫順序是

    • Pattern p = Pattern.compile(“a*b”);

    • Matcher m = p.matcher(“aaaaab”);

    • boolean b = m.matches();

###14.10_常見物件(正則表示式的獲取功能)

  • A:正則表示式的獲取功能
    • Pattern和Matcher的結合使用
  • B:案例演示
    • 需求:把一個字串中的手機號碼獲取出來

###14.11_常見物件(Math類概述和方法使用)

  • A:Math類概述
    • Math 類包含用於執行基本數學運算的方法,如初等指數、對數、平方根和三角函式。
  • B:成員方法
    • public static int abs(int a)
    • public static double ceil(double a) 向上取整但是結果是double
    • public static double floor(double a) 向下取整,但是結果是double型別
    • public static int max(int a,int b) min自學
    • public static double pow(double a,double b) 前面是底數,後面是指數
    • public static double random() 0 -1 之間的double
    • public static int round(float a) 四捨五入
    • public static double sqrt(double a) 去平方根

###14.12_常見物件(Random類的概述和方法使用)

  • A:Random類的概述
    • 此類用於產生隨機數如果用相同的種子建立兩個 Random 例項,
    • 則對 每個例項進行相同的方法呼叫序列,它們將生成並返回相同的數字序列。
  • B:構造方法
    • public Random()
    • public Random(long seed)
  • C:成員方法

NextXXX是根據給定的種子數去計算
如果用的Random()就是隨機種子數
(eedUniquifier() ^ System.nanoTime()

如果用相同的種子書,多個nextXXX返回值相同

  • public int nextInt()

  • public int nextInt(int n)(重點掌握)
    生成 0 到 n 範圍的隨機數 左閉右開

###14.13_常見物件(System類的概述和方法使用)

  • A:System類的概述
    • System 類包含一些有用的類欄位和方法。它不能被例項化。
  • B:成員方法
    • public static void gc()
    • public static void exit(int status)
    • public static long currentTimeMillis()
    • pubiic static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
  • C:案例演示
    • System類的成員方法使用

Finalize()方法詳解:

  1. 什麼是finalize()方法?,
    finalize()是Object的protected方法,子類可以覆蓋該方法以實現資源清理工作。另外,Java 技術允許使用 finalize() 方法在垃圾收集器將物件從記憶體中清除出去之前做必要的清理工作。

  2. finalize()方法什麼時候被呼叫?
    垃圾回收器GC在回收物件進行記憶體釋放前會先呼叫finalize方法

詳細見:https://blog.csdn.net/qq_40940540/article/details/84069487

###14.14_常見物件(BigInteger類的概述和方法使用)

  • A:BigInteger的概述
    • 可以讓超過Integer範圍內的資料進行運算
  • B:構造方法
    • public BigInteger(String val)
  • C:成員方法
    • public BigInteger add(BigInteger val)
    • public BigInteger subtract(BigInteger val)
    • public BigInteger multiply(BigInteger val)
    • public BigInteger divide(BigInteger val)
    • public BigInteger[] divideAndRemainder(BigInteger val)

###14.15_常見物件(BigDecimal類的概述和方法使用)

  • A:BigDecimal的概述
    • 由於在運算的時候,float型別和double很容易丟失精度,演示案例。

    • 所以,為了能精確的表示、計算浮點數,Java提供了BigDecimal

    • 不可變的、任意精度的有符號十進位制數。

  • B:構造方法
    • public BigDecimal(String val)
  • C:成員方法
    • public BigDecimal add(BigDecimal augend)
    • public BigDecimal subtract(BigDecimal subtrahend)
    • public BigDecimal multiply(BigDecimal multiplicand)
    • public BigDecimal divide(BigDecimal divisor)
  • D:案例演示
    • BigDecimal類的構造方法和成員方法使用

###14.16_常見物件(Date類的概述和方法使用)(掌握)

  • A:Date類的概述
    • 類 Date 表示特定的瞬間,精確到毫秒。
  • B:構造方法
    • public Date()
    • public Date(long date)
  • C:成員方法
    • public long getTime()
    • public void setTime(long time)

###14.17_常見物件(SimpleDateFormat類實現日期和字串的相互轉換)(掌握)

  • A:DateFormat類的概述
    • DateFormat 是日期/時間格式化子類的抽象類,它以與語言無關的方式格式化並解析日期或時間。是抽象類,所以使用其子類SimpleDateFormat
  • B:SimpleDateFormat構造方法
    • public SimpleDateFormat()
    • public SimpleDateFormat(String pattern)
  • C:成員方法
    • public final String format(Date date)
    • public Date parse(String source)

###14.18_常見物件(你來到這個世界多少天案例)(掌握)

  • A:案例演示
    • 需求:算一下你來到這個世界多少天?

###14.19_常見物件(Calendar類的概述和獲取日期的方法)(掌握)

  • A:Calendar類的概述
    • Calendar 類是一個抽象類,它為特定瞬間與一組諸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日曆欄位之間的轉換提供了一些方法,併為操作日曆欄位(例如獲得下星期的日期)提供了一些方法。
  • B:成員方法
    • public static Calendar getInstance()
    • public int get(int field)

###14.20_常見物件(Calendar類的add()和set()方法)(掌握)

  • A:成員方法
    • public void add(int field,int amount)
    • public final void set(int year,int month,int date)
  • B:案例演示
    • Calendar類的成員方法使用

###14.21_常見物件(如何獲取任意年份是平年還是閏年)(掌握)

  • A:案例演示
    • 需求:鍵盤錄入任意一個年份,判斷該年是閏年還是平年

###14.22_day14總結

  • 把今天的知識點總結一遍。