[TOC]
# 正則
## 匹配規則
~~~
字符:x
含義:代表的是字符x
例如:匹配規則為 "a",那么需要匹配的字符串內容就是 ”a”
字符:\\
含義:代表的是反斜線字符'\'
例如:匹配規則為"\\" ,那么需要匹配的字符串內容就是 ”\”
字符:\t
含義:制表符
例如:匹配規則為"\t" ,那么對應的效果就是產生一個制表符的空間
字符:\n
含義:換行符
例如:匹配規則為"\n",那么對應的效果就是換行,光標在原有位置的下一行
字符:\r
含義:回車符
例如:匹配規則為"\r" ,那么對應的效果就是回車后的效果,光標來到下一行行首
字符類:[abc]
含義:代表的是字符a、b 或 c
例如:匹配規則為"[abc]" ,那么需要匹配的內容就是字符a,或者字符b,或字符c的一個
字符類:[^abc]
含義:代表的是除了 a、b 或 c以外的任何字符
例如:匹配規則為"[^abc]",那么需要匹配的內容就是不是字符a,或者不是字符b,或不是字符c的任意一個字符
字符類:[a-zA-Z]
含義:代表的是a 到 z 或 A 到 Z,兩頭的字母包括在內
例如:匹配規則為"[a-zA-Z]",那么需要匹配的是一個大寫或者小寫字母
字符類:[0-9]
含義:代表的是 0到9數字,兩頭的數字包括在內
例如:匹配規則為"[0-9]",那么需要匹配的是一個數字
字符類:[a-zA-Z_0-9]
含義:代表的字母或者數字或者下劃線(即單詞字符)
例如:匹配規則為" [a-zA-Z_0-9] ",那么需要匹配的是一個字母或者是一個數字或一個下滑線
預定義字符類:.
含義:代表的是任何字符
例如:匹配規則為" . ",那么需要匹配的是一個任意字符。如果,就想使用 . 的話,使用匹配規則"\\."來實現
預定義字符類:\d
含義:代表的是 0到9數字,兩頭的數字包括在內,相當于[0-9]
例如:匹配規則為"\d ",那么需要匹配的是一個數字
預定義字符類:\w
含義:代表的字母或者數字或者下劃線(即單詞字符),相當于[a-zA-Z_0-9]
例如:匹配規則為"\w ",,那么需要匹配的是一個字母或者是一個數字或一個下滑線
邊界匹配器:^
含義:代表的是行的開頭
例如:匹配規則為^[abc][0-9]$ ,那么需要匹配的內容從[abc]這個位置開始, 相當于左雙引號
邊界匹配器:$
含義:代表的是行的結尾
例如:匹配規則為^[abc][0-9]$ ,那么需要匹配的內容以[0-9]這個結束, 相當于右雙引號
邊界匹配器:\b
含義:代表的是單詞邊界
例如:匹配規則為"\b[abc]\b" ,那么代表的是字母a或b或c的左右兩邊需要的是非單詞字符([a-zA-Z_0-9])
數量詞:X?
含義:代表的是X出現一次或一次也沒有
例如:匹配規則為"a?",那么需要匹配的內容是一個字符a,或者一個a都沒有
數量詞:X*
含義:代表的是X出現零次或多次
例如:匹配規則為"a*" ,那么需要匹配的內容是多個字符a,或者一個a都沒有
數量詞:X+
含義:代表的是X出現一次或多次
例如:匹配規則為"a+",那么需要匹配的內容是多個字符a,或者一個a
數量詞:X{n}
含義:代表的是X出現恰好 n 次
例如:匹配規則為"a{5}",那么需要匹配的內容是5個字符a
數量詞:X{n,}
含義:代表的是X出現至少 n 次
例如:匹配規則為"a{5, }",那么需要匹配的內容是最少有5個字符a
數量詞:X{n,m}
含義:代表的是X出現至少 n 次,但是不超過 m 次
例如:匹配規則為"a{5,8}",那么需要匹配的內容是有5個字符a 到 8個字符a之間
~~~
## 字符串中正則表達式
~~~
public boolean matches(String regex) //判斷字符串是否匹配給定的規則
public String[] split(String regex) //根據給定正則表達式的匹配規則,拆分此字符串
public String replaceAll(String regex,String replacement) //將符合規則的字符串內容,全部替換為新字符串
~~~
例子:
~~~
String qq="123456789";
String regex="[1-9][0-9]{4,14}";
boolean flag2=qq.matches(regex);
String s = "18-22-40-65";
String regex = "-";
String[] result = s.split(regex);
String s = "Hello12345World6789012";
String regex = "[0-9]";
String result = s.replaceAll(regex, "*");
~~~
# Date
構造方法:
~~~
public Date()// 系統當前日期時間
public Date(long date) 得到一個1970年1月1日 0點這個時間基礎上,加上參數date 毫秒值對應的日期時間
~~~
~~~
Date date=new Date();
~~~
方法:
~~~
public long getTime() 獲取日期所對應的毫秒值
~~~
# DateFormat
DateFormat 日期/時間格式化子類的抽象類, 使用其子類SimpleDateFormat 實例化
構造方法:
~~~
public SimpleDateFormat() 默認的格式化操作
public SimpleDateFormat(String pattern) 按照指定的格式,進行日期格式化
日期和時間模式
y 年
M 年中的月份
d 月份中的天數
H 一天中的小時數(0-23)
m 小時中的分鐘數
s 分鐘中的秒數
S 毫秒數
~~~
方法:
~~~
public final String format(Date date) 把日期 格式化成字符串
public Date parse(String source) 把日期字符串 轉換成 日期對象
~~~
例子
~~~
//創建日期格式化對象,在獲取格式化對象時可以指定風格
DateFormat df= new SimpleDateFormat("yyyy-MM-dd");//對日期進行格式化
Date date = new Date(1607616000000L);
String str_time = df.format(date);
System.out.println(str_time);//2020年12月11日
String str = ”2020年12月11日”;
DateFormat df = new SimpleDateFormat(“yyyy年MM月dd日”);
Date date = df.parse( str );
//Date對象中的內容為Fri Dec 11 00:00:00 CST 2020
~~~
# Calendar
日歷類,可獲取日期中指定字段的值
方法:
* public static Calendar getInstance() //獲取日期對象
* public int get(int field) //獲取時間字段值,字段參見幫助文檔
- YEAR 年
- MONTH 月,從0開始算起,最大11;0代表1月,11代表12月。
- DATE 天
- HOUR 時
- MINUTE分
- SECOND秒
* public void add(int field,int amount) //指定字段增加某值
* public final void set(int field,int value)//設置指定字段的值
* public final Date getTime() //獲取該日歷對象轉成的日期對象
----
例子:
~~~
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
//修改當前時間為3天后
c.add(Calendar.DATE, 3);
//修改當前時間為5小時后
c.add(Calendar.HOUR, 5);
//設置時間為2020年5月20日
c.set(Calendar.YEAR, 2020);
c.set(Calendar.MONTH, 4);
c.set(Calendar.DATE, 20);
Date d = c.getTime();
~~~
求出今天距離2020年1月1日還有多少天
思路:
1.獲取當前時間對應的天數
2.獲取2020年1月1日對應的天數
3.兩個時間相減(2020年1月1日的天數 –當前時間天數)
代碼實現:
~~~
public static void main(String[] args){
Calendar my = Calendar.getInstance();
Calendar c = Calendar.getInstance();
//設置年月日 2020-01-01
my.set(Calendar.YEAR, 2020);
my.set(Calendar.MONTH, 0);
my.set(Calendar.DATE, 1);
//獲取時間中的天數
int day = c.get(Calendar.DATE);
int myDay = my.get(Calendar.DATE);
System.out.println(myDay - day);
}
~~~
- 基礎
- 編譯和安裝
- scanner類(鍵盤錄入)
- Random類(隨機數)
- 數組
- 方法
- 類
- ArrayList集合
- char與int
- eclipse
- IDEA
- 變量與常量
- 常用API
- String,StringBuffer,StringBuilder
- 正則,Date,DateFormat,Calendar
- 包裝類,System,Math,Arrays,BigInteger,BigDecimal
- 集合,迭代器,增強for,泛型
- List,set,判斷集合唯一
- map,Entry,HashMap,Collections
- 異常
- IO
- File
- 遞歸
- 字節流
- 字符流
- IO流分類
- 轉換流
- 緩沖流
- 流的操作規律
- properties
- 序列化流與反序列化流
- 打印流
- commons-IO
- IO流總結
- 多線程
- 線程池
- 線程安全
- 線程同步
- 死鎖
- lock接口
- ThreadLoad
- 等待喚醒機制
- 線程狀態
- jdbc
- DBUtils
- 連接池DBCP
- c3p0連接池
- 網絡編程
- 多線程socket上傳圖片
- 反射
- xml
- 設計模式
- 裝飾器模式
- web service
- tomcat
- Servlet
- response
- request
- session和cookie
- JSP
- EL
- JSTL
- 事務
- 監聽器Listener
- 過濾器Filter
- json
- linux安裝軟件
- 反射詳解
- 類加載器和注解
- 動態代理
- jedis
- Hibernate
- 簡介
- 創建映射文件
- Hibernate核心配置文件
- 事務和增刪改查
- HibernateUtils
- 持久化對象的三種狀態
- 檢索方式
- query
- Criteria
- SQLQuery
- 持久化類
- 主鍵生成策略
- 緩存
- 事務管理
- 關系映射
- 注解
- 優化
- struts2
- 搭建
- 配置詳解
- Action
- 結果跳轉方式
- 訪問ServletAPI方式
- 如何獲得參數
- OGNL表達式
- valueStack 值棧
- Interceptor攔截器
- spring
- 導包
- IOC和DI
- Bean獲取與實例化
- Bean屬性注入
- spring注解
- 注解分層
- junit整合
- aop
- 動態代理實現
- cglib代理實現
- aop名詞
- spring的aop
- aop-xml詳解
- aop-注解詳解
- 代理方式選擇
- jdbcTemplate
- spring事務管理
- 回滾注意
- 事務傳播屬性
- MyBatis
- MyBatis簡介
- 入門程序
- 與jdbc hibernate不同
- 原始Dao開發
- Mapper動態代理方式
- SqlMapConfig.xml配置文件
- 輸入參數pojo包裝類
- resultMap
- 動態sql
- 一對一關聯
- 一對多
- 整合spring
- 逆向工程
- maven
- maven簡介
- 倉庫
- maven目錄結構
- maven常用命令
- 生命周期
- eclipse中maven插件
- 入門程序
- 整合struct
- 依賴范圍
- 添加插件
- idea配置
- jar包沖突
- 分模塊開發
- 構建可執行的jar包(包含依賴jar包)
- springMVC
- 處理流程
- java面試
- java版本升級
- java1-8版本變更
- java9新特性
- 鎖
- java資料
- idea
- jdk版本切換
- log4j
- 入門實例
- 基本使用方法
- Web中使用Log4j
- spring中使用log4j
- java代碼優化