1. 正则表达式

(1)字符:

  1. x 字符 x
  2. \\反斜线字符
  3. \n换行符
  4. \r回车符

(2)字符类:

  1. [abc]  字符类
  2. [^abc] 除了abc外的字符
  3. [a-zA-Z] 所有小写字母和大写字母,同理[0-9]为所有数字

(3)预定义字符类

  1. . 任何字符  .字符本身用\.表示
  2. \d 数字:[0-9]  通产使用时为\\d
  3. \D 非数字 [^0-9]
  4. \w 单词字符 [a-zA-Z_0-9] 

(4)边界匹配器

  1. ^ 行的开头
  2. $ 行的结尾
  3. \b 单词边界 就是不是单词字符的地方

(5)数量词

  1. X? 一次或一次都没有
  2. X* 零次或多次
  3. X+ 一次或多次
  4. X{n} 恰好n次
  5. X{n,} 至少n次
  6. X{n,m} 至少n次,但是不超过m次

判断功能:String类的public boolean matches(String regex)

分割功能:public Strin[] split(String regex)

替换功能:public String replaceAll(String regex.String replacement)

获取功能:Pattern和Matcher类的使用

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexDemo {
	public static void main(String[] args) {	
		//定义字符串
		String s = "da jia kai xin bu,wo shi hao hai zi";
		//规则
		String regex = "\\b\\w{3}\\b";
		
		//把规则编译成模式对象
		Pattern p = Pattern.compile(regex);
		//通过模式对象得到匹配器对象
		Matcher m = p.matcher(s);
		//调用匹配器对象
        //一定要先find,然后在group
		while(m.find()) {
			System.out.println(m.group());
		}
	}
}

2. math类

用于数学运算的类

成员变量:
(1)public static final double PI
(2)public static final double E
成员方法:
(1)public static int abs(int a):绝对值
(2)public static double ceil(double a):向上取整
(3)public static double floor(double a):向上取整
(4)public static int max(int a, int b):最大值
(5)public static double pow(double a, double b):a 的次幂
(6)public static double random():随机数
(7)public static int round(float a):四舍五入
(8)public static double sqrt(double a):正平方根

获取一个start到end之间的随机数

import java.util.Scanner;

public class MathDemo {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入开始数:");
		int start = sc.nextInt();
		System.out.println("请输入结束数:");
		int end = sc.nextInt();
		int num = getRandom(start, end);
		System.out.println(num);
		
	}
	public static int getRandom(int start, int end) {
		int number = (int)(Math.random() * (end-start+1)) + start;
		return number;
	}
}

3. Random类

构造方法:public Random():没有给种子,用的是默认种子,是当前时间的毫秒值 ,另一种 形式是long seed做参数
给定种子后,每次得到的随机数是相同的
成员方法:
(1)public int nextInt():返回int范围内的随机数
(2)public int nextInt(int n):返回的是(0,n)范围内的随机数

4. 一些其他类和方法

(1)public static void gc():运行垃圾回收器
(2)public static void exit(int status):终止当前正在运行的java虚拟机。参数用作状态码,非0的状态码表示异常终止
(3)public static long currentTimeMills():返回以毫秒为单位的当前时间
(4)public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length):从指定位置开始到结束复制一个数组

5. BigInteger类

BigInteger(String val) 可以让超过Integer范围内的数据进行运算
(1)public BigInteger add(BigInteger val):加
(2)public BigInteger subtract(BigInteger val):减
(3)public BigInteger multiply(BigInteger val):乘
(4)public BigInteger divide(BigInteger val):除
(5)public BigInteger[] divideAndRemainder(BigInteger val):返回商和余数的数组

6. BidDecimal类

在运算的时候,float类型和double很容易丢失精度,BigDecimal能够精确的表示和计算浮点数

构造方法: public BigDecimal(String val)
BigDecimal的使用方法同基本一致,除了除法

public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode):商,几位小数,如何舍取

7.Date类

表示特定的时间,精确到毫秒
从Date到String为格式化,从String到Date为解析
构造方法:
(1)Date():根据当前的默认毫秒值创建日期对象
(2)Date(long date):根据给定的毫秒值创建日期对象

成员方法:
(1)public long getTime():获取时间,以毫秒为单位
(2)public void setTime(long time):设置时间

DateFormat:可以进行日期和字符串的格式化和解析,但是由于是抽象类,所以使用具体子类SimpleDateFormat

8. Calendar

是一个抽象类,为操作日历字段和字段之间的转换提供了一些方法
成员方法:
(1)public static Calendar getInstance()
(2)public int get(int field) 返回给定日历字段的值,日历类中的每个日历字段都是静态的成员变量,并且是int类型
(3)public void add(int field,int amount) 根据给定的日历字段和对应的时间,来对当前的日历进行操作
(4)public final void set(int year,int month,int date) 设置当前日历的年月日

import java.util.Calendar;

public class CalendarDemo {
	public static void main(String[] args) {
		//获取当前的日历时间
		Calendar c = Calendar.getInstance();
		
		//获取年月日
		int year = c.get(Calendar.YEAR);
		int month = c.get(Calendar.MONTH);
		int date = c.get(Calendar.DATE);
		System.out.println(year+"年"+(month+1)+"月"+date+"日");
		
		//三年前的今天
		c.add(Calendar.YEAR, -3);
		year = c.get(Calendar.YEAR);
		month = c.get(Calendar.MONTH);
		date = c.get(Calendar.DATE);
		System.out.println(year+"年"+(month+1)+"月"+date+"日");
	}
}
2020年10月12日
2017年10月12日