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


Java基础知识14——常用API-day02正则表达式&Date&DateFormat&Calendar



Java基础知识14——常用API-day02正则表达式&Date&DateFormat&Calendar


Java基础知识14——常用API-day02正则表达式&Date&DateFormat&Calendar


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+"天");
    }
}