Java基础知识14——常用API-day02正则表达式&Date&DateFormat&Calendar
正则表达式规则:
A:字符
X 字符X。举例:'a'表示字符a
\\ 反斜杠字符。
\n 换行符('\u000A')
\r 回车符('\u000D')
B:字符类
[abc] a、b或c(简单类)
[^abc] 任何字符,除了a、b或c(否定)
[a-zA-Z]a到z或A到Z,两头的字母包括在内(范围)
[0-9] 0到9的字符都包括
C:预定义字符类
. 任何字符。假如我的就是.字符本身,怎么表示呢?\.
\d 数字: [0-9]
\D 非数字: [^0-9]
\w 单词字符: [a-zA-Z_0-9](在正则表达式里面组成的东西必须有这些东西组成)
\W 非单词字符:[^\w]
D:边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界 (就是不是单词字符的地方。举例:hello world?haha;xixi)
E:Greedy 数量词
X? X,一次或一次也没有 (0或1)
X* X,零次或多次 (0,1...)
X+ X,一次或多次 (1,...)
X{n} X,恰好 n 次 (n)
X{n,} X,至少 n 次 (n,...)
X{n,m} X,至少 n 次,但是不超过 m 次
* 判断功能:
* String类的public boolean matches(String regex)
* 分隔功能
* String类的public String[] split(String regex)
* 根据给定正则表达式的匹配拆分此字符串。
* String类的替换功能
* public String replaceAll(String regex,String replacement)
* 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
* 获取功能:
* Pattern和Matcher类的使用
* //模式和匹配器的典型调用顺序
//把正则表达式编译成模式对象
Pattern p = Pattern.compile("a*b");
//通过模式对象得到匹配器对象,这个时候需要的是被匹配的字符串
Matcher m = p.matcher("aaaaab");
//调用匹配器对象的功能
boolean b = m.matches();
System.out.println(b);//true
DateFormat类:
* DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。
* 日期/时间格式化子类(如SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。(2012-12-12 12:12:12<->Wed Dec 12 12:12:12 CST 2012)
*
* 成员方法:
* public String format(Date date) 将一个 Date 格式化为日期/时间字符串。
* public Date parse(String s) 从给定字符串的开始解析文本,以生成一个日期。该方法不使用给定字符串的整个文本。
*
* //Date --- String(格式化)
* public final String format(Date date)
* 将一个 Date 格式化为日期/时间字符串。
* //String --- Date(解析)
* public Date parse(String source)throws ParseException
* 从给定字符串的开始解析文本,以生成一个日期。该方法不使用给定字符串的整个文本。
*
* 已实现子类SimpleFormat构造方法
* public SimpleDateFormat(){}默认匹配模式
* public SimpleDateFormat(String pattern){}指定匹配模式
* 匹配模式:
* y 年
* M 月
* d 日
* H 小时
* m 分钟
* s 秒
import java.util.Date;
public class 实践2 {
public static void main(String[] args) throws ParseException {
System.out.println("----------日期转换成字符串----------");
//Date --- String
//创建日期对象
Date d = new Date();
System.out.println(d);
//创建日期格式化对象
SimpleDateFormat sdf = new SimpleDateFormat();
String s = sdf.format(d);
System.out.println(s);//17-7-14 上午11:30
//创建日期格式化对象
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String s2 = sdf2.format(d);
System.out.println(s2);//2017年07月14日 11:35:47
System.out.println("----------字符串转换成日期----------");
//String --- Date
String ss = "2012-12-12 12:12:12";
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d2 = sdf3.parse(ss);
System.out.println(d2);//Wed Dec 12 12:12:12 CST 2012
}
}
Calendar
* Calendar类概述
* Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR
* 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
*
* public static Calendar getInstance()
* 使用默认时区和语言环境获得一个日历。
*
* public int get(int field):返回给定日历字段的值。
* 日历类中的每个日历字段都是静态的成员变量,并且是int类型。
*
* public void add(int field,int amount)
* 根据给定的日历字段和对应的时间,来对当前的日历进行操作。
*
* public final void set(int year, int month,int date)
* 设置当前日历的年月日
*
* /*
* 面试题:
* 获取任意一年的二月有多少天?
* 分析:
* A:键盘录入任意的年份
* B:设置日历对象的年月日
* 年就是A输入的年份
* 月是2
* 日是1
* C:把时间往前推一天,就是2月的最后一天
* D:输出这一天即可
*/
public class CalendarDemo任意年份的二月有几天 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要检测的年份:");
int year = sc.nextInt();
Calendar c = Calendar.getInstance();
c.set(year, 2,1);//其实是这年的3月1日
c.add(Calendar.DATE, -1);
int date = c.get(Calendar.DATE);
System.out.println("你输入的年份是:"+year+"年,"+"2月份共有"+date+"天");
}
}