## 正则表达式
java.util.regex.Pattern
正则表达式:
一个用来描述或者匹配一系列符合某个语法规则字符串的单个字符串
使用:
String | boolean mathches (Sting regex);,判断字符串是否符合regex正则表达式规则
字符类
[abc]
a、b 或 c(简单类)
[^abc]
任何字符,除了 a、b 或 c(否定)
[a-zA-Z]
a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]]
d、e 或 f(交集)
[a-z&&[^bc]]
a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)
预定义字符类规则
.
任何字符(与行结束符可能匹配也可能不匹配)
\d
数字:[0-9]
\D
非数字: [^0-9]
\s
空白字符:[ \t\n\x0B\f\r]
\S
非空白字符:[^\s]
\w
单词字符:[a-zA-Z_0-9]
\W
非单词字符:[^\w]
圆点用 \\.表示
数量词规则
X?
X,一次或一次也没有
X
X,零次或多次
X+
X,一次或多次
X{n}
X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
替换功能
String | String replaceAll(String regex, String replacement)
根据指定正则表达式规则,替换所有符合规则的字符
分组
叠词切割:
(.)\\1+
(.)
表示任意字符作为一个组
\\1
表示第一组出现一次
+
表示出现1次或多次
String s1 = "sdqqfgkkkhjppppkl";
System.out.println(s1.replaceAll("(.)\\1+", ""));
String s2 = "我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程";
System.out.println(s2.replaceAll("\\.","").replaceAll("(.)\\1+", "$1"));
## Pattern 和 Mather
Pattern: Java中正则表达式的功能实现的提供者
Mather: 匹配器
格式:
Pattern p = Pattern.compile(regex);
//获取正则表达式
Matcher m = p.matcher(string);
//获取比较器
boolean b = m.matches();
以上同:string.matches(regex);效果
String s = "我的手机是18511866260,我曾用过18987654321,还用过18812345678";
Pattern p = Pattern.compile("1[0-9]{10}");
//获取正则表达式
Matcher m = p.matcher(s);
while(m.find()) {
String string = m.group();
System.out.println(string);
}
## Math
常用方法:
Math.PI
double Math.ceil();
向上取整
double Math.floor(); 向下取整
int Math.abs(); 绝对值
Math.max();
Math.min();
double Math.pow(x,y);
x的y次方
Math.random(); 生成[0.0,1.0)间的小数
int Math.round(); 四舍五入
double Math.sqrt();
开平方
## Random
专门用于生成随机数的类
构造方法
Random();
Random(long seed);
常用方法
int nextInt();
//随机生成一个整数
int nextInt(int n);
//生成随机数,范围在0和n之间,包含0不包含n
## System
常用方法:
public static void gc()
//调用垃圾回收器
public static void exit(int status)
退出jvm虚拟机,非0表示异常退出
public static void currentTimeMillis()
获取当前时间毫秒值
public static void arrayCopy(src,srcPos,dest,destPos,length)
数组拷贝,给数组扩容
## BigInteger 和 BigDecimal
BigInteger
构造方法:
public BigInteger(String val)
常用方法
public BigInteger add(BigInteger val)
public BigInteger subtract(BigInteger val)
public BigInteger multiply(BigInteger val)
public BigInteger divide(BigInteger val)
public BigInteger remainder(BigInteger val)
BigDecimal
为了更精确的计算小数
System.out.println(12.3/0.3);
//41.00000000000001
System.out.println(2.0 - 1.1);
//0.8999999999999999
构造
public BigDecimal(String val)
方法
public BigDecimal add(BigDecimal augend)
public BigDecimal subtract(BigDecimal subtrahend)
public BigDecimal multiply(BigDecimal multiplicand)
public BigDecimal divide(BigDecimal divisor)
推荐方式
BigDecimal bd1 = new BigDecimal("2.0");
BigDecimal bd2 = new BigDecimal("1.1");
System.out.println(bd1.subtract(bd2));
## Date
构造
Date()
Date(long date)
方法:
long getTime() //获取当前时间毫秒值
void setTime(long time) 设置毫秒值,改变时间对象
long 和 Date 互转
long -> Date getTime()
Date -> long 构造方法,Date d = new Date(long date)
## SimpleDateFormat
是抽象类DateFormat的直接子类,格式化并解析时间
构造:
SimpleDateFormat()
使用默认个事解析时间
SimpleDateFormat(String pattern)
指定日期格式
方法:
public fianl String format(Date date)
将时间按照指定格式转换为字符串
public Date parse(String source)
把字符串按照指定格式解析成Date
String 和 Date 相互转换
Date -> String format
String -> Date parse
## Calendar
Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
概述:可以对日期进行加减操作的类
创建对象格式
Calendar c = Calendar.getInstance(); //父类引用指向子类对象
常用方法
add(int field,int amount)
对指定字段向前减,向后加
正数表示向后计算n天后,负数表示向前计算n天前
set(int field, int value)
将给定的日历字段设置为给定值
get(int field) 获取指定字段的值;
c.get(Calendar.YEAR);获取当前对象的年
Date 和 Calendar 相互转换
Calendar -> Date
使用calendar的Date | getTime()方法
Date -> Calendar
date无法直接转换为calendar,可以先创建一个calendar对象,然后通过c.setTime(Date d)方法转换为Calendar对象
练习
生成日历