B:案例演示
需求:校验qq号码.
a:非正则表达式实现
/*
* 需求:校验qq号码.
* 1:要求必须是5-15位数字
* 2:0不能开头
* 3:必须都是数字
* 校验qq
* 1,明确返回值类型boolean
* 2,明确参数列表String qq
*/
public static boolean checkQQ(String qq) {
boolean flag = true; //如果校验qq不符合要求就把flag置为false,如果符合要求直接返回
if(qq.length() >= 5 && qq.length() <= 15) {
if(!qq.startsWith("0")) {
char[] arr = qq.toCharArray(); //将字符串转换成字符数组
for (int i = 0; i < arr.length; i++) {
char ch = arr[i]; //记录每一个字符
if(!(ch >= '0' && ch <= '9')) {
flag = false; //不是数字
break;
}
}
}else {
flag = false; //以0开头,不符合qq标准
}
}else {
flag = false; //长度不符合
}
return flag;
}
}
* b:正则表达式实现
String regex = "[1-9]\\d{4,14}";
public static void main(String[] args) {
String s = "金丹胖.郭美美.大侠";
String[] arr = s.split("\\."); //.代表任意字符,要想用“.”切,则需要“\\.”
for (String string : arr) {
System.out.println(string);
}
}
public static void main(String[] args) {
//splitDemo();
String s="91 27 46 38 50";
String[] arr = s.split(" ");
int[] arrInt = new int[arr.length];
int i=0;
for (String string : arr) {
arrInt[i++] = Integer.parseInt(string);
}
Arrays.sort(arrInt);
StringBuffer sb = new StringBuffer();
for(int j=0;j< arrInt.length;j++){
if(j==arrInt.length-1){
sb.append(arrInt[j]);
}else{
sb.append(arrInt[j]+" ");
}
}
System.out.println(sb);
}
1 ((A)(B(C)))
2 (A
3 (B(C))
4 (C)
组零始终代表整个表达式。
B:案例演示
a:切割
需求:请按照叠词切割: “sdqqfgkkkhjppppkl”;
String s2="sdqqfgkkkhjppppkl";
String regex2="(.)\\1+";//出现一次或者多次
String[] arr =s2.split(regex2);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
//叠词:快快乐乐
String regex = "(.)\\1(.)\\2"; // \\1表示第一组又出现1次,\\2表示第二组又出现1次
System.out.println("快快乐乐".matches(regex));
//叠词:高兴高兴
String regex1 = "(..)\\1(..)\\2"; // \\1表示第一组又出现1次,\\2表示第二组又出现1次
System.out.println("高兴高兴".matches(regex1));
b:替换
需求:我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程
将字符串还原成:“我要学编程”。
String s3="我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程";
String s4=s3.replaceAll("\\.", "");
System.out.println(s4);
String s5=s4.replaceAll("(.)\\1+", "$1"); //$1代表第一组的内容
System.out.println(s5);
B:模式和匹配器的典型调用顺序
通过JDK提供的API,查看Pattern类的说明
典型的调用顺序是
boolean b = m.matches();//判断是否匹配,匹配返回true
上面三句等同于“aaaaab”.matches(“a*b”);
public static void main(String[] args) {
String s = "我的手机号码是18812388888,用过13345678910,还用过18510669730";
String regex="1[3578]\\d{9}";
Pattern p = Pattern.compile(regex); //获取正则表达式
Matcher m = p.matcher(s); //获取匹配器
while(m.find()){ //尝试查找与该模式匹配的输入序列的下一个子序列。
System.out.println(m.group()); //返回由以前匹配操作所匹配的输入子序列
}
}
结果:
18812388888
13345678910
18510669730
*public static void gc() 运行垃圾回收器。其实就是呼叫保洁阿姨,保洁阿姨是类本身的finalize()方法。Object中有finalize()方法:当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
* public static void exit(int status)
非0状态是异常终止,退出jvm
* public static long currentTimeMillis()
* 获取当前时间的毫秒值,可以判定程序执行时间
* pubiic static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 将数组内容拷贝
A:BigDecimal的概述
所以,为了能精确的表示、计算浮点数,Java提供了BigDecimal
不可变的、任意精度的有符号十进制数。
B:构造方法
C:成员方法
Date d2 = new Date();
System.out.println(d2.getTime()); //通过时间对象获取毫秒值
System.out.println(System.currentTimeMillis());//通过系统类的方法获取当前时间毫秒值
//1465268214758
//1465268214759
* public void setTime(long time)
d2.setTime(1000);
System.out.println(d2); //通过时间对象获取毫秒值
public static void main(String[] args) throws ParseException {
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("YYYY年MM月dd日 HH:mm:ss");
System.out.println(sdf.format(d));
//将时间字符串转为日期对象
String s = "2016年06月07日 11:12:09";
SimpleDateFormat sdf1 = new SimpleDateFormat("YYYY年MM月dd日 HH:mm:ss");
Date d1 = sdf1.parse(s); //加异常:parseException
System.out.println(d1);
}
public static void main(String[] args) throws ParseException {
//得到生日与当前日期字符串,转化为Date对象,得到相差的毫秒值,从而得到对应天数
String birthday = "1992年11月08日";
String today = "2016年06月07日";
SimpleDateFormat sdf = new SimpleDateFormat("YYYY年MM月dd日");
Date d1 = sdf.parse(birthday);
Date d2 = sdf.parse(today);
long time = d2.getTime()-d1.getTime();
System.out.println(time/1000/60/60/24);
}
package com.heima.otherclass;
import java.util.Calendar;
public class Demo9_Calendar {
/**
* * A:Calendar类的概述
* Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
* B:成员方法
* public static Calendar getInstance()
* public int get(int field)
* C:成员方法
* public void add(int field,int amount)
* public final void set(int year,int month,int date)
* D:案例演示
* Calendar类的成员方法使用
*/
public static void main(String[] args) {
//demo1();
Calendar c = Calendar.getInstance(); //父类引用指向子类对象
//c.add(Calendar.MONTH, -1); //对指定的字段进行向前减或向后加
//c.set(Calendar.YEAR, 2000); //修改指定字段
c.set(2000, 7, 8);
System.out.println(c.get(Calendar.YEAR) + "年" + getNum((c.get(Calendar.MONTH)+1))
+ "月" + getNum(c.get(Calendar.DAY_OF_MONTH)) + "日" + getWeek(c.get(Calendar.DAY_OF_WEEK)));
}
public static void demo1() {
Calendar c = Calendar.getInstance(); //父类引用指向子类对象
//System.out.println(c);
System.out.println(c.get(Calendar.YEAR)); //通过字段获取年
System.out.println(c.get(Calendar.MONTH)); //通过字段后期月,但是月是从0开始编号的
System.out.println(c.get(Calendar.DAY_OF_MONTH));//月中的第几天
System.out.println(c.get(Calendar.DAY_OF_WEEK));//周日是第一天,周六是最后一天
System.out.println(c.get(Calendar.YEAR) + "年" + getNum((c.get(Calendar.MONTH)+1))
+ "月" + getNum(c.get(Calendar.DAY_OF_MONTH)) + "日" + getWeek(c.get(Calendar.DAY_OF_WEEK)));
}
/*
* 将星期存储表中进行查表
* 1,返回值类型String
* 2,参数列表int week
*/
public static String getWeek(int week) {
String[] arr = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
return arr[week];
}
/*
* 如果是个数数字前面补0
* 1,返回值类型String类型
* 2,参数列表,int num
*/
public static String getNum(int num) {
/*if(num > 9) {
return "" + num;
}else {
return "0" + num;
}*/
return num > 9 ? "" + num : "0" + num;
}
}
package com.heima.test;
import java.util.Calendar;
import java.util.Scanner;
public class Test3 {
/**
* * A:案例演示
* 需求:键盘录入任意一个年份,判断该年是闰年还是平年
* Calendar c = Calendar.getInstance();
*
* 分析:
* 1,键盘录入年Scanner
* 2,创建Calendar c = Calendar.getInstance();
* 3,通过set方法设置为那一年的3月1日
* 4,将日向前减去1
* 5,判断日是多少天,如果是29天返回true否则返回false
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份,判断该年份是闰年还是平年:");
//int year = sc.nextInt();
String line = sc.nextLine(); //录入数字字符串
int year = Integer.parseInt(line); //将数字字符串转换成数字
boolean b = getYear(year);
System.out.println(b);
}
private static boolean getYear(int year) {
//2,创建Calendar c = Calendar.getInstance();
Calendar c = Calendar.getInstance();
//设置为那一年的3月1日
c.set(year, 2, 1);
//将日向前减去1
c.add(Calendar.DAY_OF_MONTH, -1);
//判断是否是29天
return c.get(Calendar.DAY_OF_MONTH) == 29;
}
}