一、正则表达式
- 正则表达式
是一组特殊的字符,描述一个字符串格式
对字符串可以进行复杂操作
不关心内容是否有效,只关心格式是否正确 - 作用: 匹配字符串是否满足给定格式
- 字符集合
[ ] 表示一个字符
[123] 表示123中任意一个字符
[0-9] 表示0~9中任意一个字符
[ ^123 ] 除了123的任意字符
[a-z&&[ ^b ]] a~z中除了bc以外的任意一个字符 - 数量词
x? 表示0个或1个x
x* 表示0个或任意多个x
x+ 表示1个到任意多个x
x{n} 表示n个x
x{n, } 表示n个到任意多个x
x{n, m} 表示n个到m个x - 预定义
. 任意一个字符
\d 任意一个数字字符,相当于[0-9]
\w 单词字符,相当于[a-zA-Z0-9_]
\s 空白字符
\D 非数字字符
\W 非单词字符
\S 非空白字符 - 分组( ): 将一系列正则表达式看作整体,分组与分组直接可以用"|"表示或
- “^“和”$” 表示字符串开始和结束,不写方法内部自动添加
- 方法
boolean matches(String regex) 将一个字符串与正则表达式进行匹配
String[] split(String regex) 将字符串拆分成字符串数组
String replaceAll(String regex, String replacement) 将字符串中匹配正则表达式regex的字符串替换成replacement
二、Object
1. 所有类的超类
直接继承: 创建class后没有继承任何类,在Java编译器编译的时候,自动添加关键字extends,继承Object类
间接继承: 这个类继承了另一个类,类外的类间接或直接继承Object
4. String toString()
没有重写输出的是地址值 (当前类继承Object类,Object类中输出的是当前对象的地址值)
重写后输出的给定的内容
3. boolean equals()
equals没有重写比较地址值,重写后比较内容、= =是比较值是否相等
String是final类,已经重写了toString方法
= =比较是否是一个对象 (可能值相等,但不是一个对象)
equals比较值是否相等
三、日期操作
1. Date
java.util.Date
Date的每一个实例用来表示一个确切的时间点; 内部(对象)维护了一个long值,距1970.1.1的毫秒值;
正数是1970年以后的日期,负数是1970年以前的日期;
由于Date设计上存在缺陷(时区、千年虫),导致大部分方法设置为“过时的”(不建议使用)。
toString()
格式: Sat Sep 08 16:13:35 CST 2018;
Date重写了toString,返回的字符串显示的是当前Date表示的时间;
long getTime()
获取Date内部维护的long值
void setTime(long)
设置一个long值,使Date表示该long值所表示的时间
大部分方法已过时(eg: getYear()、getMonth()等)
2. SimpleDateFormat
java.text.SimpleDateFormat
根据给定日期格式将String与Date相互转换: Date–>String 格式化、String–>Date 解析
日期格式
y-年、M-月、d-日 写M,如果表示两位数的月份,最后还是会自动显示两位月份
E-星期、a-AM或PM标识
H-小时(24)、h-小时(12)、m-分钟、s-秒
构造方法
SimpleDateFormat()
SimpleDateFormat(String pattern)
用给定模式和默认语言环境的日期格式符号构造
String format(Date date) Date–>String
将给定的Date,转换为SimpleDateFormat指定日期格式的字符串
Date parse(String source) String–>Date
将给定的字符串按照SimpleDateFormat指定日期格式解析为Date对象;
注: 如果字符串格式和SimpleDateFormat格式不一致,在解析时会发生异常: java.text.ParseException: Unparseable date
3. Calendar
- java.util.Calendar 抽象类,常用实现类是格里高里历(阳历)。
- getInstance() 使用Calendar静态方法创建实例。
- Date getTime() Calendar–>Date
- void setTime(Date date) Date–>Calendar
- void set(int field, int value) 针对不同时间分量单独设置值
- 设定月: 月从0开始,0表示1月,或者可以使用具体月的常量
- 设定日: DATE月中天、DAT_OF_MONTH与DATE一致
- int get(int field) 获取对应时间分量的值
- 获取月: 需要加1,因为月是从0开始
- 获取时: HOUR是12小时制、HOUR_OF_DAY是24小时制
- 获取星期: 国外是从星期日开始,从1开始
- int getActualMaximum(int field) 获取某一时间分量所允许的最大值
- void add(int field, int value) 对指定时间分量加上给定的值
若给定的值是负数,则是减去给定的值 - 日期开发思路
- Step1.获取用户输入的日期字符串
- Step2.使用SimpleDateFormat将其转换为Date
- Step3.创建一个Calendar,使其表示Date表示的日期
- Step4.使用Calendar根据需求计算时间
- Step5.将Calendar转换为一个Date
- Step6.使用SimpleDateFormat将Date转换为字符串后显示给用户