------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
正则表达式
正则表达式的组成规则 java.util.regex.Pattern
常见组成规则
字符集合
[abc] a、b、c中任意一个字符
[^abc] 除了a、b、c的任意字符
[a-z] a-z中的任意一个字符
[a-zA-Z0-9] a~z、A~Z、0~9中任意一个字符
[a-z&&[^bc]] a~z中除了b和c以外的任意一个字符
预定义字符集
.任意一个字符
\d 任意一个数字字符,相当于[0-9]
\w 单词字符,相当于[a-zA-Z0-9_]
\s 空白字符,相当于[\t\n\x0B\f\r]
\D 非数字字符
\W 非单词字符
\S 非空白字符
数量词
X? 表示0个或1个X
X* 表示0个或任意多个X
X+ 表示1个到任意多个X(大于等于1个X)
X{n} 表示n个X
X{n,} 表示n个到任意多个X(大于等于n个X)
X{n, m} 表示n个到m个X
分组()
将一系列正则表达式看作一个整体,分组时可以使用 "|" 表示“或”关系
例如:匹配手机号码前面的区号
(\+86|0086)?\s*d{11} //需要出现“+86”或者“0086”
边界匹配
^ 代表字符串开始
$ 代表字符串结束
例如:匹配用户名规则―从头到尾连续8~10个单词字符
\w{8,10} // "abcd1234_abcd"是可以通过验证的
^\w{8,10}$ // 有从头到尾整体的限定,则验证不能通过
正则表达式的应用
判断功能 matches方法
public boolean matches(Stringregex) // 将一个字符串与正则表达式进行匹配
例如:测试email是否合法
String emailRegex= "^[a-zA-Z0-9_]+@[a-z0-9-]+(\\.[a-z0-9]+)+$";
booleanb = "[email protected]".matches(emailRegex);
System.out.println(b); // true
分割功能
public String[] split(Stringregex) // 将字符串拆分成字符串数组
String string= "www.itcast.cn";
Stringregex= "\\.";
String[]strings= string.split(regex);
for (inti = 0; i < strings.length; i++) {
System.out.print(strings[i]);
} // wwwitcastcn
替换功能
public String replaceAll(Stringregex, String replacement)
// 将字符串中匹配正则表达式regex的字符串替换成replacement
Stringstring= "www.itcast.cn";
Stringregex= "\\.";
string = string.replaceAll(regex, "");
System.out.println(string); //wwwitcastcn
获取功能
string = "www.itcast.cn, www.itheima.com";
regex = "\\b[a-zA-Z]{3}\\b";
// 1.将给定的正则表达式编译到模式中
Patternpattern= Pattern.compile(regex);
// 2.创建匹配给定输入与此模式的匹配器,将预编译的规则和传递字符串进行匹配
Matchermatcher= pattern.matcher(string);
// 3.使用匹配器对象的find方法找和规则匹配的字符串
// boolean find = matcher.find();
while (matcher.find()) {
// 4.获取查找到的字符串
Stringresult= matcher.group();
System.out.print(result+ " ");// www www com
// find =matcher.find();
}
Math类 java.lang.Math
包含用于执行基本数学运算的方法,全静态
常用成员方法
int abs() // 返回绝对值
double ceil(double a) // 返回大于等于a的最小整数double值
double floor(double a) // 返回小于等于a的最大整数double值
int max(int a, int b) // 返回最大值
double pow(double a, double b) // 幂运算
double random() // 0.0 <= 随机数 < 1.0
int round(float a) // 舍入
double sqrt() // 开平方根(正确舍入的double值的正平方根)
Random类java.util.Random
用于生成随机数 new Random()
成员方法
int nextInt(), int nextInt(int n)
System类java.lang.System
包含一些有用的类字段和方法,不能被实例化
System.gc() // 用于建议JVM马上调度GC线程回收资源
System.exit() // 终止当前正在运行的JVM
System.currentTimeMillis() // 返回以毫秒值为单位的当前时间
// 实现数组的复制 源数组, 源起始位置, 目标数组, 目标起始位置, 要复制长度
System.arraycopy(Object src, intsrcPos, Object dest, int destPos, int length)
BigInteger类java.math.BigInteger
BigDecimal类java.math.BigDecimal
可以让超过范围内的数据进行运算
new BigInteger(String val) // 将十进制字符串表示形式转换为BigInteger
new BigDecimal(String val) // 将字符串表示形式转换为BigDecimal
常用成员方法(加减乘除四则运算)
add(), subtract(), multiply(), divide()
Date类 java.util.Date
表示精确到毫秒值的时间
构造方法
Date() // 当前OS时间日期(Wed Sep 09 23:54:48 CST 2015)
Date(long date) // 毫秒值 --> 日期对象
成员方法
long getTime() // 获取日期对象对应的毫秒值 日期对象 --> 毫秒值
void setTime(long time) // 设置日期对象的毫秒值
DateFormat类 java.text.DateFormat
日期/时间格式化子类(SimpleDateFormat)的抽象类,以与语言无关的方式格式化并解析日期或时间。
包含大量的非抽象的静态方法,通过类型直接调用,返回值是本类对象(子类对象)
成员方法
// 将一个Date对象格式化为 日期/时间字符串
final String format(Date date)
//将字符串解析生成日期对象
Date parse(String source) // Date date = dateFormat.parse("2015-8-7");
// 获取日期/时间格式器 dateFormat.parse(DateFormat.LONG,DateFormat.LONG)
static DateFormat getDateTimeInstance(int dateStyle, int timeStyle)
DateFormatdf4= DateFormat.getDateInstance();
Datedate= df4.parse("2015-08-07Java基础班");
System.out.println(date); // Fri Aug 07 00:00:00 CST 2015
StringdateStr= DateFormat.getDateTimeInstance().format(date);
System.out.println(dateStr); //2015-8-7 0:00:00
SimpleDateFormat类 格式化和解析日期的具体类 (日期 --> 文本、文本 --> 日期)
String pattern = "yyyy年MM月dd日 HH:mm:ss";
SimpleDateFormat(),SimpleDateFormat(String pattern) // 给定日期格式创建对象
newSimpleDateFormat(pattern).format(new Date()) // 调用父类方法格式化日期
计算出生天数示例
package cn.itcast;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;
import java.util.Scanner;
/*
* 算一下来到世界多少天
* 1.得到字符串类型的日期
* 2.用格式化类parse()方法将字符串类型日期转成Date对象
* 3.将Date对象转成毫秒值做运算,计算天数
* 4.判断三种情况
*/
public class BirthdayDemo {
public static void main(String[]args) throws ParseException {
System.out.println("请输入生日:(格式 2015-8-7)");
String string = newScanner(System.in).nextLine();
// 获取日期格式转换器
DateFormat df =DateFormat.getDateInstance();
Date birthday =df.parse(string);
Date today = new Date();
long ms = today.getTime() -birthday.getTime();
long day = ms / 1000 / 60 / 60/ 24;
/*
* 今天出生的情况一定要放在还没出生情况的后面做判断,因为ms<0, day=0
*/
if (ms < 0) {
System.out.println("还没出生");
} else if (day == 0) {
System.out.println("今天出生");
} else {
System.out.println("出生 " + day + " 天");
}
}
}
Calendar类java.util.Calendar
提供日历字段之间的转换方法和操作日历字段方法的抽象类
成员方法
static Calendar getInstance() // 返回子类对象
int get(int field) // 获取日历字段
void add(int field, int amount) //以当前日期时间进行偏移量计算
final void set(int year, intmonth, int date)
voidcalendar.setTimeInMillis(long millis);// 设置毫秒值
案例:计算保质期,判断某年是不是闰年
package cn.itcast;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class CalendarDemo {
public static void main(String[]args) throws ParseException {
System.out.println("计算保质期");
Scanner sc = new Scanner(System.in);
System.out.println("输入生产日期:(格式 2015-8-7)");
String datestr =sc.nextLine();
System.out.println("请输入保质期(天数)");
int days = sc.nextInt();
countDate(datestr, days);
System.out.println("-------------------");
System.out.println("输入年份,判断该年是否为闰年");
isLeapYear(newScanner(System.in).nextInt());
}
// 利用Calendar类 add()偏移量方法计算保质期
public static voidcountDate(String datestr, int days) throws ParseException {
// 将字符串形式的日期利用日期格式转换器转成Date类型
DateFormat df =DateFormat.getDateInstance();
Date date = df.parse(datestr);
// 创建calendar对象,设置成生产日期当天的时间
Calendar calendar =Calendar.getInstance();
calendar.setTime(date);
// 生产日期加上保质期天数进行偏移量计算
calendar.add(Calendar.DAY_OF_MONTH,days);
System.out.println("过期时间");
// 利用自定义的Calendar工具类将calend对象的各字段属性打印出来
CalendarUtil.printCalendar(calendar);
}
// 计算某年是不是闰年
public static void isLeapYear(intyear) {
// 将日期设置为该年3月1日
Calendar calendar =Calendar.getInstance();
calendar.set(year, 2, 1);
// 天数向前偏移1天
calendar.add(Calendar.DAY_OF_MONTH,-1);
// 获取天数日期,如果是29 则为闰年
if(calendar.get(Calendar.DAY_OF_MONTH) == 29) {
System.out.println(year +" 年是闰年");
} else {
System.out.println(year +" 年不是闰年");
}
}
}