java生日正则表达式_Java编程基础15——正则表达式常用工具类
1_正則表達式的概述和簡單使用
A:正則表達式
是指一個用來描述或者匹配一系列符合某個語法規則的字符串的單個字符串。其實就是一種規則。有自己特殊的應用。
作用:比如注冊郵箱,郵箱有用戶名和密碼,一般會對其限制長度,這個限制長度的事情就是正則表達式做的
B:案例演示
需求:校驗qq號碼.
1:要求必須是5-15位數字
2:0不能開頭
3:必須都是數字
a:非正則表達式實現
b:正則表達式實現
2_字符類演示
A:字符類
[abc] a、b 或 c(簡單類)
[a-zA-Z] a到 z 或 A到 Z,兩頭的字母包括在內(范圍)
[0-9] 0到9的字符都包括
3_預定義字符類演示
A:預定義字符類
. 任何字符。
d 數字:[0-9]
w 單詞字符:[a-zA-Z_0-9]
4_數量詞
A:Greedy 數量詞
X? X,一次或一次也沒有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超過 m 次
5_正則表達式的分割功能
A:正則表達式的分割功能
String類的功能:public String[] split(String regex)
B:案例演示
正則表達式的分割功能
6_把給定字符串中的數字排序
A:案例演示
需求:我有如下一個字符串:”91 27 46 38 50”,請寫代碼實現最終輸出結果是:”27 38 46 50 91”
7_正則表達式的替換功能
A:正則表達式的替換功能
String類的功能:public String replaceAll(String regex,String replacement)
B:案例演示
正則表達式的替換功能
8_正則表達式的分組功能
A:正則表達式的分組功能
捕獲組可以通過從左到右計算其開括號來編號。例如,在表達式 ((A)(B(C))) 中,存在四個這樣的組:
1 ((A)(B(C)))
2 (A
3 (B(C))
4 (C)
組零始終代表整個表達式。
B:案例演示
a:切割
需求:請按照疊詞切割: "sdqqfgkkkhjppppkl";
b:替換
需求:我我....我...我.要...要要...要學....學學..學.編..編編.編.程.程.程..程
將字符串還原成:“我要學編程”。
9_Pattern和Matcher的概述
A:Pattern和Matcher的概述
B:模式和匹配器的典型調用順序
通過JDK提供的API,查看Pattern類的說明
典型的調用順序是
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();
10_正則表達式的獲取功能
A:正則表達式的獲取功能
Pattern和Matcher的結合使用
B:案例演示
需求:把一個字符串中的手機號碼獲取出來
11_Math類概述和方法使用
A:Math類概述
Math 類包含用于執行基本數學運算的方法,如初等指數、對數、平方根和三角函數。
B:成員方法
public static int abs(int a)
public static double ceil(double a)
public static double floor(double a)
public static int max(int a,int b) min自學
public static double pow(double a,double b)
public static double random()
public static int round(float a) 參數為double的自學
public static double sqrt(double a)
public static void main(String[] args) {
System.out.println(Math.PI);
System.out.println(Math.abs(-10)); //取絕對值
System.out.println(Math.ceil(12.01));//獲取向上取整,但是結果是一個double值
System.out.println(Math.ceil(12.99));
System.out.println(Math.floor(12.01));//獲取向下取整,但是結果也是一個double值
System.out.println(Math.floor(12.99));
System.out.println(Math.max(20, 30));//取最大值
System.out.println(Math.min(20, 30));//取最小值
System.out.println(Math.pow(2, 3)); //2.0的3次方
System.out.println(Math.random());//生成0.0到1.0之間的所有小數,包括0.0,不包括1.0
System.out.println(Math.round(12.3f));//四舍五入
System.out.println(Math.sqrt(2));//開平方
}
12_Random類的概述和方法使用
A:Random類的概述
此類用于產生隨機數如果用相同的種子創建兩個 Random 實例,
則對每個實例進行相同的方法調用序列,它們將生成并返回相同的數字序列。
B:構造方法
public Random()
public Random(long seed)
C:成員方法
public int nextInt()
public int nextInt(int n)(重點掌握)
import java.util.Random;
public class Other_Random_2 {
public static void main(String[] args) {
Random r = new Random();
/*int x = r.nextInt();
System.out.println(x);
for (int i = 0; i < 10; i++) {
System.out.println(r.nextInt());
System.out.println(r.nextInt(100));
}
*/
Random r2 = new Random(1000);
int a = r2.nextInt();
int b = r2.nextInt();
System.out.println(a);
System.out.println(b);
}
}
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類的成員方法使用
public class Other_System_3 {
public static void main(String[] args) {
// demo1();
// demo2();
// demo3();
demo4();
}
private static void demo4() {
int[] src = {11,22,33,44,55,66,77,88,99};
int[] dest = new int[10];
for (int i = 0; i < dest.length; i++) {
System.out.println(dest[i]);
}
System.out.println("-----------------------");
System.arraycopy(src, 0, dest, 0, src.length); //將數組內容拷貝
for (int i = 0; i < dest.length; i++) {
System.out.println(dest[i]);
}
}
private static void demo3() {
long start = System.currentTimeMillis();
for (int i = 0; i < 1000; i++) {
System.out.println("*");
}
long end = System.currentTimeMillis(); //獲取當前時間的毫秒值
System.out.println(end - start);
}
private static void demo2() {
System.exit(0); //非0狀態是異常終止,退出jvm
System.out.println("1111111");
}
private static void demo1() {
for (int i = 0; i < 100; i++) {
new Demo();
System.gc(); //運行垃圾回收器
}
}
}
class Demo { //在一個源文件中不允許定義兩個用public修飾的類
public void finalize() {
System.out.println("被清掃了");
}
}
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)
import java.math.BigInteger;
public class Other_BigInteger_4 {
public static void main(String[] args) {
// long num = 155565456465465465545;
// String s = "155565456465465465545";
BigInteger bi1 = new BigInteger("100");
BigInteger bi2 = new BigInteger("3");
System.out.println(bi1.add(bi2)); // +
System.out.println(bi1.subtract(bi2)); // -
System.out.println(bi1.multiply(bi2)); // x
System.out.println(bi1.divide(bi2)); // /
BigInteger[] arr = bi1.divideAndRemainder(bi2);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
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類的構造方法和成員方法使用
import java.math.BigDecimal;
public class Other_BigDecimal_5 {
public static void main(String[] args) {
// System.out.println(2.0 - 1.1);
/* BigDecimal bd1 = new BigDecimal(2.0);//不推薦,還是不夠精確
BigDecimal bd2 = new BigDecimal(1.1);
System.out.println(bd1.subtract(bd2));*/
/* BigDecimal bd1 = new BigDecimal("2.0");//通過構造中傳入字符串的方式,開發時推薦
BigDecimal bd2 = new BigDecimal("1.1");
System.out.println(bd1.subtract(bd2));*/
BigDecimal bd1 = BigDecimal.valueOf(2.0);//這種方法開發中也是推薦的
BigDecimal bd2 = BigDecimal.valueOf(1.1);
System.out.println(bd1.subtract(bd2));
}
}
16_Date類的概述和方法使用*
A:Date類的概述
類 Date 表示特定的瞬間,精確到毫秒。
B:構造方法
public Date()
public Date(long date)
C:成員方法
public long getTime()
public void setTime(long time)
import java.util.Date;
public class Other_6_Date {
public static void main(String[] args) {
// demo1();
// demo2();
Date d1 = new Date();
d1.setTime(1000); //設置毫秒值,改變時間對象
System.out.println(d1);
}
private static void demo2() {
Date d1 = new Date();
System.out.println(d1.getTime()); //通過時間對象獲取毫秒值
System.out.println(System.currentTimeMillis());//通過系統類的方法獲取當前時間毫秒值
}
private static void demo1() {
Date d1 = new Date(); //沒有傳參數代表當前時間
System.out.println(d1);
Date d2 = new Date(0); //0代表Thu Jan 01 08:00:00 CST 1970
System.out.println(d2); //通過毫秒值創建時間對象
}
}
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)
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Other_7_DateFormat {
public static void main(String[] args) throws ParseException {
// demo1();
// demo2();
//將時間字符串轉換成日期對象
String str = "2000年08月08日 08:08:08";
SimpleDateFormat sdf = new SimpleDateFormat("y年M月d日 HH:mm:ss");
Date d = sdf.parse(str); //將時間字符串轉換成日期對象 Ctrl+1拋出異常
System.out.println(d);
}
private static void demo2() {
Date d = new Date(); //獲取當前時間對象
SimpleDateFormat sdf = new SimpleDateFormat("y年M月d日 HH:mm:ss"); //創建日期格式化類對象
System.out.println(sdf.format(d)); //將日期對象轉換為字符串
}
private static void demo1() {
//DateFormat df = new DateFormat(); //是抽象類,不允許實例化
//DateFormat df = new SimpleDateFormat();
DateFormat df1 = DateFormat.getDateInstance(); //相當于父類引用指向子類對象,右邊的方法返回一個子類
}
}
18_你來到這個世界多少天案例*
A:案例演示
需求:算一下你來到這個世界多少天?
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Other_8_test {
public static void main(String[] args) throws ParseException {
/* 分析
1.將生日字符串和今天字符串存在String類型的變量中
2.定義日期格式化對象
3.將日期字符串轉換成日期對象
4.通過日期對象后期時間毫秒值
5.將兩個時間毫秒值相減除以1000,再除以60,再除以60,再除以24得到天*/
//1
String birthday = "1998年12月12日";
String today = "2018年9月17日";
//2
SimpleDateFormat sdf = new SimpleDateFormat("y年M月d日");
//3
Date d1 = sdf.parse(birthday);
Date d2 = sdf.parse(today);
//4
long time = d2.getTime() - d1.getTime();
//5
System.out.println(time / 1000 / 60 / 60 / 24 / 365);
}
}
19_Calendar類的概述和獲取日期的方法*
A:Calendar類的概述
Calendar 類是一個抽象類,它為特定瞬間與一組諸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日歷字段之間的轉換提供了一些方法,并為操作日歷字段(例如獲得下星期的日期)提供了一些方法。
B:成員方法
public static Calendar getInstance()
public int get(int field)
import java.util.Calendar;
public class Other_Calendar_9 {
public static void main(String[] args) {
Calendar c = Calendar.getInstance(); //父類引用指向子類對象
// System.out.println(c);
System.out.println(c.get(Calendar.YEAR));//通過字段獲取年
System.out.println(c.get(Calendar.MONDAY));//通過字段獲取月,從0開始
System.out.println(c.get(Calendar.DAY_OF_MONTH));//獲取日
System.out.println(c.get(Calendar.DAY_OF_WEEK));//周日是第一
System.out.println(c.get(Calendar.YEAR) + "年" + getNum(c.get(Calendar.MONTH) + 1) + "月" +
getNum(c.get(Calendar.DAY_OF_MONTH)) + "日" + getWeek(c.get(Calendar.DAY_OF_WEEK)));
}
/*
將星期存儲表中,進行查表
1.返回值類型String
2.參數列表int*/
public static String getWeek(int week) {
String[] arr = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
return arr[week];
}
/* 將個位數字補0
1.返回值類型String
2.參數列表int num*/
public static String getNum(int num) {
/* if(num > 9) {
return "" + num;
}else {
return "0" + num;
}*/
return num > 9 ? "" + num : "0" + num;
}
}
20_Calendar類的add()和set()方法*
A:成員方法
public void add(int field,int amount)
public final void set(int year,int month,int date)
B:案例演示
Calendar類的成員方法使用
public static void main(String[] args) {
// demo1();
Calendar c = Calendar.getInstance(); //父類引用指向子類對象
c.add(Calendar.MONTH, -1); //對指定的字段進行加減操作
c.set(Calendar.YEAR, 2000); //修改指定字段
c.set(2000, 7, 18);
System.out.println(c.get(Calendar.YEAR) + "年" + getNum(c.get(Calendar.MONTH) + 1) + "月" +
getNum(c.get(Calendar.DAY_OF_MONTH)) + "日" + getWeek(c.get(Calendar.DAY_OF_WEEK)));
}
21_如何獲取任意年份是平年還是閏年*
A:案例演示
需求:鍵盤錄入任意一個年份,判斷該年是閏年還是平年
import java.util.Calendar;
import java.util.Scanner;
public class Other_10_test {
public static void main(String[] args) {
/* 分析
1.鍵盤錄入年Scanner
2.創建Calendar c = Calendar.getInstance();
3.通過set方法設置為那一年的3月1日
4.將日向前減去1
5.判斷日是多少天,如果是29天返回true,否則false*/
Scanner sc = new Scanner(System.in);
System.out.println("請輸入年份,判斷該年份是閏年還是平年:");
// int year = sc.nextInt();
String line = sc.nextLine(); //錄入數字字符串
int year = Integer.parseInt(line); //將數字字符串轉換成數字
Boolean b = getYear(year);
System.out.println(b);
}
private static Boolean getYear(int year) {
Calendar c = Calendar.getInstance();//第二步
c.set(year, 2, 1); //第三步,設置為那一年的3月1日
c.add(Calendar.DAY_OF_MONTH, -1);//將日向前減去1
return c.get(Calendar.DAY_OF_MONTH) == 29;//判斷是否為29
}
}
abc ?
總結
以上是生活随笔為你收集整理的java生日正则表达式_Java编程基础15——正则表达式常用工具类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vb.net 2019-机器学习ml.n
- 下一篇: 你真的知道什么是多线程吗?为什么要学习多