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,獲取的是當前日曆物件所在月天數的最大值