10.1
Calendar:它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法
Calendar(日历类) -- 获取年,获取月,获取日,获取时,获取分,获取秒。
public int get(int field):返回给定日历字段的值
10.2
需求:获取当前时间的5年后的3个月前的7天后。
public void add(int field,int amount):根据amount修改field的值
public void set(int year,int month,int date):设置当前日历的年月日
package com.edu.calendar;
import java.util.Calendar;
import java.util.Scanner;
public class CalendarTest {
publicstatic void main(String[] args) {
//10.3 键盘录入年份,获取任意一年的二月有多少天
/**
* 1.获取年份
* 2.将日历对象的时间调到,此年的3月的第一天
* 3.将日期对象向前推一天
* 4.获取此天的日期
*/
System.out.println("请输入年份");
Scannersc = new Scanner(System.in);
intyear = sc.nextInt();
//2.将日历对象的时间调到,此年的3月的第一天
Calendarc = Calendar.getInstance();
c.set(year,2, 1);
//3.将日期对象向前推一天
c.add(Calendar.DATE,-1);
//4.获取此天的日期
System.out.println("该年的二月有"+c.get(Calendar.DATE));
}
}
10.3
键盘录入年份,获取任意一年的二月有多少天
package com.edu.calendar;
import java.util.Calendar;
import java.util.Scanner;
public class CalendarTest {
public static void main(String[] args) {
// 10.3 键盘录入年份,获取任意一年的二月有多少天
/**
* 1.获取年份
* 2.将日历对象的时间调到,此年的3月的第一天
* 3.将日期对象向前推一天
* 4.获取此天的日期
*/
System.out.println("请输入年份");
Scanner sc = new Scanner(System.in);
int year = sc.nextInt();
// 2.将日历对象的时间调到,此年的3月的第一天
Calendar c = Calendar.getInstance();
c.set(year, 2, 1);
//3.将日期对象向前推一天
c.add(Calendar.DATE, -1);
//4.获取此天的日期
System.out.println("该年的二月有"+c.get(Calendar.DATE));
}
}
/**
*
案例:
键盘录入出生日期,算一下你来到这个世界多少天?
*/
package com.edu;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
/**
*
案例:
键盘录入出生日期,算一下你来到这个世界多少天?
*/
public class Day {
public static void main(String[] args) throws ParseException {
//创建键盘录入对象并导包
Scanner sc = new Scanner(System.in);
//提示用户输入
System.out.println("请按照yyyy-MM-dd输入出生日期");
//接收键盘录入数据
String dateBirth = sc.nextLine();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d = sdf.parse(dateBirth);
long birthTime = d.getTime();
Date d2 = new Date();
long nowTime = d2.getTime();
long time = nowTime-birthTime;
System.out.println("你来到这个世上"+time/(1000*60*60*24)+"天了");
}
}
--------------------------------------------------------------------------------------------------------------------------
11. 正则表达式:
11.1
正则表达式:符合一定规则的字符串
案例:(用正则和代码两种方式实现)
键盘录入qq号码,校验QQ号码。
需求:
1:要求必须是5-15位数字
2:0不能开头
package com.edu.regex1;
import java.util.Scanner;
public class RegexDemo {
public static void main(String[] args) {
/**
* 案例:(用正则和代码两种方式实现)
键盘录入qq号码,校验QQ号码。
需求:
1:要求必须是5-15位数字
2:0不能开头
分析:(封装一个方法,这个方法的返回值是布尔类型,参数就是qq号码)
1.判断qq号码的长度,5-15位之间
2.不能以0开头
3.每一位的字符必须是数字
*/
System.out.println("请输入你需要校验的qq号码");
Scanner sc = new Scanner(System.in);
String qq = sc.nextLine();
//将获取到的qq号码传递给我这个方法
//方式1:使用代码进行校验qq号码
//System.out.println(isCheck(qq));
//方式2:使用正则表达式校验qq号码
System.out.println(isCheck2(qq));
}
private static boolean isCheck2(String qq) {
//定义一个校验qq号码的正则表达式,这个正则表达式就是符合我的qq号码的校验规则的正杂表达式
String reg = "[1-9][0-9]{4,14}";
//使用正则表达式校验我的qq号码
boolean flag = qq.matches(reg);
return flag;
}
private static boolean isCheck(String qq) {
//定义一个标记
boolean flag = true;
//在这里进行校验判断,但凡有一个条件不满足,就更该flag的值为false
//1.判断qq号码的长度,5-15位之间
if (qq.length()>=5&&qq.length()<=15) {
//2.不能以0开头
if (!qq.startsWith("0")) {
//3.每一位的字符必须是数字
char[] qqChs = qq.toCharArray();
//遍历字符数组
for (int i = 0; i < qqChs.length; i++) {
if (Character.isDigit(qqChs[i])) {
}else {
flag = false;
}
}
}else {
flag = false;
}
}else {
//更改flag的值
flag = false;
}
return flag;
}
}
11.2
规则字符在java.util.regexPattern类中
A:字符
x字符x(举例:a,1)
\\反斜线字符
B:字符类
[abc]a、b 或 c(简单类)
[^abc]任何字符,除了 a、b 或 c(否定)
[a-zA-Z]a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[0-9]0-9字符
C:预定义字符类
.任何字符
\d数字:[0-9]
\w单词字符:[a-zA-Z_0-9]
D:Greedy数量词
X?X,一次或一次也没有
X*X,零次或多次
X+X,一次或多次
X{n}X,恰好 n 次
X{n,}X,至少 n 次
X{n,m}X,至少 n 次,但是不超过 m 次
结论:以后需要匹配的正则表达式怎么写呢?
答:不用写,直接网上百度
11.3
判断功能:
public boolean matches(Stringregex):告知此字符串是否匹配给定的正则表达式。
需求1:找出规则,写出正则(1[38][0-9]{9}),校验电话号码
13245678901 13332345678 1345678901218812345678 18999999999
18666666666 18786868686
需求2:找出规则,写出正则(Stringreg = "[a-zA-Z_0-9]+@[a-zA-Z_0-9]{2,8}(\\.[comnet]{2,3})+"),校验邮箱
sunmeng@163.com zhangsan@126.com lisi@sina.com wxd1221@sina.com.cn
csf@gmail.com 1512345@qq.com
11.4
分割功能
public String[] split(String regex):根据给定正则表达式的匹配拆分此字符串。
需求1:
分割如下字符串:
String s = "aa,bb,cc";
String s2 = "aa.bb.cc";
String s3 = "aa bb cc";
String s4 = "aa bb cc";
String s5 = "D:\\baidu\\20150826\\day14";
需求2:
我有如下一个字符串:”91 27 46 3850”
请写代码实现最终输出结果是:”27 38 46 50 91”
package com.edu03;
import java.util.Arrays;
/**
*
需求2:
我有如下一个字符串:”91 27 46 38 50”
请写代码实现最终输出结果是:”27 38 46 50 91”r
*
*/
publicclass SplitDemo {
publicstaticvoid main(String[] args) {
String s = "91 27 4638 50";
String reg = " ";
String[] str = s.split(reg);
//遍历字符串数组,并定义一个int[]
int[] arr = newint[str.length];
for (int i = 0; i < str.length; i++) {
arr[i] = Integer.parseInt(str[i]);
}
//排序int[]
Arrays.sort(arr);
//遍历数组
StringBuffer sb = new StringBuffer();
for (int i = 0; i < arr.length; i++) {
sb.append(arr[i]+" ");
}
System.out.print(sb.toString());
}
}
转载于:https://blog.51cto.com/12771294/1919368