------Java培訓、Android培訓、iOS培訓、.Net培訓、期待與您交流! -------
正則表達式
正則表達式的組成規則 java.util.regex.Pattern
常見組成規則
字符集合
[abc] a、b、c中任意一個字符
[^abc] 除了a、b、c的任意字符
[a-z] a-z中的任意一個字符
[a-zA-Z0-9] a~z、A~Z、0~9中任意一個字符
[a-z&&[^bc]] a~z中除了b和c以外的任意一個字符
預定義字符集
.任意一個字符
\d 任意一個數字字符,相當於[0-9]
\w 單詞字符,相當於[a-zA-Z0-9_]
\s 空白字符,相當於[\t\n\x0B\f\r]
\D 非數字字符
\W 非單詞字符
\S 非空白字符
數量詞
X? 表示0個或1個X
X* 表示0個或任意多個X
X+ 表示1個到任意多個X(大於等於1個X)
X{n} 表示n個X
X{n,} 表示n個到任意多個X(大於等於n個X)
X{n, m} 表示n個到m個X
分組()
將一系列正則表達式看作一個整體,分組時可以使用 "|" 表示“或”關係
例如:匹配手機號碼前面的區號
(\+86|0086)?\s*d{11} //需要出現“+86”或者“0086”
邊界匹配
^ 代表字符串開始
$ 代表字符串結束
例如:匹配用戶名規則—從頭到尾連續8~10個單詞字符
\w{8,10} // "abcd1234_abcd"是可以通過驗證的
^\w{8,10}$ // 有從頭到尾整體的限定,則驗證不能通過
正則表達式的應用
判斷功能 matches方法
public boolean matches(Stringregex) // 將一個字符串與正則表達式進行匹配
例如:測試email是否合法
String emailRegex= "^[a-zA-Z0-9_]+@[a-z0-9-]+(\\.[a-z0-9]+)+$";
booleanb = "[email protected]".matches(emailRegex);
System.out.println(b); // true
分割功能
public String[] split(Stringregex) // 將字符串拆分成字符串數組
String string= "www.itcast.cn";
Stringregex= "\\.";
String[]strings= string.split(regex);
for (inti = 0; i < strings.length; i++) {
System.out.print(strings[i]);
} // wwwitcastcn
替換功能
public String replaceAll(Stringregex, String replacement)
// 將字符串中匹配正則表達式regex的字符串替換成replacement
Stringstring= "www.itcast.cn";
Stringregex= "\\.";
string = string.replaceAll(regex, "");
System.out.println(string); //wwwitcastcn
獲取功能
string = "www.itcast.cn, www.itheima.com";
regex = "\\b[a-zA-Z]{3}\\b";
// 1.將給定的正則表達式編譯到模式中
Patternpattern= Pattern.compile(regex);
// 2.創建匹配給定輸入與此模式的匹配器,將預編譯的規則和傳遞字符串進行匹配
Matchermatcher= pattern.matcher(string);
// 3.使用匹配器對象的find方法找和規則匹配的字符串
// boolean find = matcher.find();
while (matcher.find()) {
// 4.獲取查找到的字符串
Stringresult= matcher.group();
System.out.print(result+ " ");// www www com
// find =matcher.find();
}
Math類 java.lang.Math
包含用於執行基本數學運算的方法,全靜態
常用成員方法
int abs() // 返回絕對值
double ceil(double a) // 返回大於等於a的最小整數double值
double floor(double a) // 返回小於等於a的最大整數double值
int max(int a, int b) // 返回最大值
double pow(double a, double b) // 冪運算
double random() // 0.0 <= 隨機數 < 1.0
int round(float a) // 舍入
double sqrt() // 開平方根(正確舍入的double值的正平方根)
Random類java.util.Random
用於生成隨機數 new Random()
成員方法
int nextInt(), int nextInt(int n)
System類java.lang.System
包含一些有用的類字段和方法,不能被實例化
System.gc() // 用於建議JVM馬上調度GC線程回收資源
System.exit() // 終止當前正在運行的JVM
System.currentTimeMillis() // 返回以毫秒值爲單位的當前時間
// 實現數組的複製 源數組, 源起始位置, 目標數組, 目標起始位置, 要複製長度
System.arraycopy(Object src, intsrcPos, Object dest, int destPos, int length)
BigInteger類java.math.BigInteger
BigDecimal類java.math.BigDecimal
可以讓超過範圍內的數據進行運算
new BigInteger(String val) // 將十進制字符串表示形式轉換爲BigInteger
new BigDecimal(String val) // 將字符串表示形式轉換爲BigDecimal
常用成員方法(加減乘除四則運算)
add(), subtract(), multiply(), divide()
Date類 java.util.Date
表示精確到毫秒值的時間
構造方法
Date() // 當前OS時間日期(Wed Sep 09 23:54:48 CST 2015)
Date(long date) // 毫秒值 --> 日期對象
成員方法
long getTime() // 獲取日期對象對應的毫秒值 日期對象 --> 毫秒值
void setTime(long time) // 設置日期對象的毫秒值
DateFormat類 java.text.DateFormat
日期/時間格式化子類(SimpleDateFormat)的抽象類,以與語言無關的方式格式化並解析日期或時間。
包含大量的非抽象的靜態方法,通過類型直接調用,返回值是本類對象(子類對象)
成員方法
// 將一個Date對象格式化爲 日期/時間字符串
final String format(Date date)
//將字符串解析生成日期對象
Date parse(String source) // Date date = dateFormat.parse("2015-8-7");
// 獲取日期/時間格式器 dateFormat.parse(DateFormat.LONG,DateFormat.LONG)
static DateFormat getDateTimeInstance(int dateStyle, int timeStyle)
DateFormatdf4= DateFormat.getDateInstance();
Datedate= df4.parse("2015-08-07Java基礎班");
System.out.println(date); // Fri Aug 07 00:00:00 CST 2015
StringdateStr= DateFormat.getDateTimeInstance().format(date);
System.out.println(dateStr); //2015-8-7 0:00:00
SimpleDateFormat類 格式化和解析日期的具體類 (日期 --> 文本、文本 --> 日期)
String pattern = "yyyy年MM月dd日 HH:mm:ss";
SimpleDateFormat(),SimpleDateFormat(String pattern) // 給定日期格式創建對象
newSimpleDateFormat(pattern).format(new Date()) // 調用父類方法格式化日期
計算出生天數示例
package cn.itcast;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;
import java.util.Scanner;
/*
* 算一下來到世界多少天
* 1.得到字符串類型的日期
* 2.用格式化類parse()方法將字符串類型日期轉成Date對象
* 3.將Date對象轉成毫秒值做運算,計算天數
* 4.判斷三種情況
*/
public class BirthdayDemo {
public static void main(String[]args) throws ParseException {
System.out.println("請輸入生日:(格式 2015-8-7)");
String string = newScanner(System.in).nextLine();
// 獲取日期格式轉換器
DateFormat df =DateFormat.getDateInstance();
Date birthday =df.parse(string);
Date today = new Date();
long ms = today.getTime() -birthday.getTime();
long day = ms / 1000 / 60 / 60/ 24;
/*
* 今天出生的情況一定要放在還沒出生情況的後面做判斷,因爲ms<0, day=0
*/
if (ms < 0) {
System.out.println("還沒出生");
} else if (day == 0) {
System.out.println("今天出生");
} else {
System.out.println("出生 " + day + " 天");
}
}
}
Calendar類java.util.Calendar
提供日曆字段之間的轉換方法和操作日曆字段方法的抽象類
成員方法
static Calendar getInstance() // 返回子類對象
int get(int field) // 獲取日曆字段
void add(int field, int amount) //以當前日期時間進行偏移量計算
final void set(int year, intmonth, int date)
voidcalendar.setTimeInMillis(long millis);// 設置毫秒值
案例:計算保質期,判斷某年是不是閏年
package cn.itcast;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class CalendarDemo {
public static void main(String[]args) throws ParseException {
System.out.println("計算保質期");
Scanner sc = new Scanner(System.in);
System.out.println("輸入生產日期:(格式 2015-8-7)");
String datestr =sc.nextLine();
System.out.println("請輸入保質期(天數)");
int days = sc.nextInt();
countDate(datestr, days);
System.out.println("-------------------");
System.out.println("輸入年份,判斷該年是否爲閏年");
isLeapYear(newScanner(System.in).nextInt());
}
// 利用Calendar類 add()偏移量方法計算保質期
public static voidcountDate(String datestr, int days) throws ParseException {
// 將字符串形式的日期利用日期格式轉換器轉成Date類型
DateFormat df =DateFormat.getDateInstance();
Date date = df.parse(datestr);
// 創建calendar對象,設置成生產日期當天的時間
Calendar calendar =Calendar.getInstance();
calendar.setTime(date);
// 生產日期加上保質期天數進行偏移量計算
calendar.add(Calendar.DAY_OF_MONTH,days);
System.out.println("過期時間");
// 利用自定義的Calendar工具類將calend對象的各字段屬性打印出來
CalendarUtil.printCalendar(calendar);
}
// 計算某年是不是閏年
public static void isLeapYear(intyear) {
// 將日期設置爲該年3月1日
Calendar calendar =Calendar.getInstance();
calendar.set(year, 2, 1);
// 天數向前偏移1天
calendar.add(Calendar.DAY_OF_MONTH,-1);
// 獲取天數日期,如果是29 則爲閏年
if(calendar.get(Calendar.DAY_OF_MONTH) == 29) {
System.out.println(year +" 年是閏年");
} else {
System.out.println(year +" 年不是閏年");
}
}
}