正则表达式
正则表达式就是符合一定规则的表达式,就是用于匹配字符串中字符组合的模式。
[a-zA-Z0-9_]:匹配所有字母及数字
[^a-zA-Z0-9_]:匹配所有非字母及数字
regx = “\w”; //跟[a-zA-Z0-9_]意思一样
regx = “\W”; //跟[^a-zA-Z0-9_]意思一样
regx = “\d”; // 跟 [0-9] 意思一样
regx = “\D”; //跟 [^0-9] 意思一样
X+:X出现一次或多次
X*:X出现零次或多次
a|b:a或b,出现之一就行
X{n}: X恰好 n 次
X{n,} :X至少 n 次
X{n,m} :X至少 n 次,但是不超过 m 次

字符串的判断功能:
public boolean matches(String regex);
regex是正则表达式,若此字符串符合正则表达式的要求,就返回true,否则返回false。

例如:

package demo;
import java.util.Scanner;
//手机号正则
//校验手机号码:
//11位
// 以1开头
// 第二位:3,5,6,7,8,9
// 后面9位任意数字
public class Test4 {
    public static void main(String[] args) {
        Scanner s=new Scanner(System.in);
        System.out.println("请输入手机号:");
        String phone=s.nextLine();
        String regex="[1][3,5,6,7,8,9]\\d{9}";
        if(phone.matches(regex)){
            System.out.println("手机号格式正确");
        }else {
            System.out.println("手机号格式错误");
        }
    }
}
运行结果;
请输入手机号:
13325458975
手机号格式正确
请输入手机号:
25446566
手机号格式错误

关键部分是:String regex="[1][3,5,6,7,8,9]\d{9}";
第一位就放1,是固定的
第二位在其中选择,当然也可以写成[3|5|6|7|8|9]
剩下九位是数字就行,也可以写作[0-9]

public String[] split(String regex):根据正则表达式切割字符串。
快速排列字符串:Arrays.sort(strings); 注:这是按照字典顺序排的
将字符串转换为数值:Integer.parseInt

模式和匹配器Pattern,Matcher:
类 Pattern 正则表达式的编译表示形式。指定为字符串的正则表达式必须首先被编译为此类的实例。Pattern 模式器封装一个正则表达式。

Pattern p = Pattern.compile(“a*b”);
Pattern 模式器 封装一个正则表达式
Matcher m = p.matcher(“aaaaab”);
通过模式器调用 matcher(“aaaaab”); 传入待匹配的字符串,返回一个Matcher 这个匹配器
boolean b = m.matches();
匹配返回true,不匹配返回false

如果你只是想要看一个字符串符不符和正则,调用String类的 matches(“a*b+”) 这个方法即可。为了对正则的操作有更多的方法,Java提供了这个两个类 Pattern Matcher。这里通过一个案例展示一下其中的两个方法,find方法和group方法

package demo7;
import java.util.StringJoiner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
//找出三个字母的单词,用匹配器实现
public class Test2 {
    public static void main(String[] args) {
        String str="da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?";
        String regex="\\b[a-z]{3}\\b";
        String []s=str.split(regex);
        Pattern p=Pattern.compile(regex);
        Matcher m=p.matcher(str);
        StringJoiner sj = new StringJoiner(",");
        while (m.find()){
            sj.add(m.group());
        }
        System.out.println(sj.toString());
    }
}
运行结果;
jia,jin,yao,xia,wan,gao

Math类
Math类中有基本的数学运算的方法
public static int abs(int a):对a取绝对值
public static double ceil(double a) :对a向上取整
public static double floor(double a) :对a向下取整
public static int max(int a,int b) :返回a和b中最大的一个数
public static double pow(double a,double b) :返回a的b次方
public static double random():返回一个随机数(范围为double内)
public static int round(float a) :对a进行四舍五入
public static double sqrt(double a):返回a的1/2次方

package demo3;
//Math类
public class Test {
    public static void main(String[] args) {
        System.out.println("绝对值"+Math.abs(-1));
        System.out.println("两个数的最大值"+Math.max(3, 9));
        System.out.println("两个数的最小值"+Math.min(3, 6));

        System.out.println("向上取整:"+Math.ceil(3.14));
        System.out.println("向下取整:"+Math.floor(3.14));
        System.out.println("四舍五入:"+Math.round(3.14));
        System.out.println("四舍五入:"+Math.round(3.64));

        System.out.println("幂运算:"+Math.pow(2, 4));
        System.out.println("立方根运算:"+Math.pow(8,1/3.0));

        System.out.println("开方运算:"+Math.sqrt(4));

        System.out.println("随机小数:"+Math.random());

        System.out.println("圆周率:"+Math.PI);
    }
}
运行结果:
绝对值1
两个数的最大值9
两个数的最小值3
向上取整:4.0
向下取整:3.0
四舍五入:3
四舍五入:4
幂运算:16.0
立方根运算:2.0
开方运算:2.0
随机小数:0.6456977352757047
圆周率:3.141592653589793

Random类
Random类用于产生随机数,主要有两个方法:
public Random() 没有给定种子,使用的是默认的(当前系统的毫秒值)
public Random(long seed):给定一个long类型的种子,给定以后每一次生成的随机数是相同的(根据相应的算法得到的“随机”数)。

public int nextInt():产生一个int型的随机数
public int nextInt(int n): 产生一个int型的随机数,范围是0-(n-1)

System类
System 类包含一些有用的类字段和方法。它不能被实例化。
public static void gc():调用垃圾回收器
public static void exit(int status):退出java虚拟机 0 为正常退出 非0为 异常退出
public static long currentTimeMillis():返回当前毫秒数,就是距1970.1.1 00:00:00的毫秒差值

BigDecimal类
BigDecimal类:对double类型的增强,可以存储更多小数位。
public BigDecimal add(BigDecimal augend) 两个数相加
public BigDecimal subtract(BigDecimal subtrahend) :两个数相减
public BigDecimal multiply(BigDecimal multiplicand) :两个数相乘
public BigDecimal divide(BigDecimal divisor) :两个数相除
public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode):除法,小数点后保留几位

package demo3;
import java.math.BigDecimal;
//Bigdecimal的用法
public class Test6 {
    public static void main(String[] args) {
       /* System.out.println(0.2*3);
        System.out.println(0.2+0.1);
        double d=10.0/3;
        System.out.println(d);*/
       double a=3.3333333333333335;
       double b=3.3333333333333335;
        System.out.println(a*b);
        BigDecimal aa=new BigDecimal("3.3333333333333335");
        BigDecimal bb=new BigDecimal("3.3333333333333335");
        System.out.println(aa.multiply(bb));
        double c=10.0/3;
        System.out.println(c);
        BigDecimal d=new BigDecimal("10.0");
        BigDecimal e=new BigDecimal("3.0");
        System.out.println(d.divide(e, 30, BigDecimal.ROUND_CEILING));
        System.out.println(d.divide(e, 50, BigDecimal.ROUND_CEILING));
    }
}
运行结果:
11.111111111111112
11.11111111111111222222222222222225
3.3333333333333335
3.333333333333333333333333333334
3.33333333333333333333333333333333333333333333333334

Date类
类 Date 表示特定的瞬间,精确到毫秒。
public long getTime():返回标准时间格式
public void setTime(long time):给一个日期对象设定指定的毫秒值
SimpleDateFormat
public final String format(Date date) :将标准时间格式转换成我们习惯的时间格式
public Date parse(String source) :将我们习惯的时间格式转换成标准时间格式

package demo4;
import java.text.SimpleDateFormat;
import java.util.Date;
//将时间格式转换成我们习惯的格式
public class Test3 {
    public static void main(String[] args) {
        Date date=new Date();
        SimpleDateFormat sd=new SimpleDateFormat();
        String date2=sd.format(date);
        System.out.println(date);
        System.out.println(date2);
        SimpleDateFormat sd2=new SimpleDateFormat("yyyy-MM-dd E hh:mm:ss"  );
        String date3=sd2.format(date);
        System.out.println(date3);
    }
}
运行结果:
Fri May 21 17:23:19 CST 2021
21-5-21 下午5:23
2021-05-21 星期五 05:23:19
package demo4;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
//将中文时间格式转换成原始时间格式
public class Test4 {
    public static void main(String[] args) throws ParseException{
        Date date=new Date();
        SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd E HH:mm:ss");
        date=sd.parse("2021-05-20 星期四 08:44:01");
        System.out.println(date);
    }
}
运行结果:
Thu May 20 08:44:01 CST 2021

字母: 日期或时间元素
y:年
M:年中的月份
w:年中的周数
W:月份中的周数
D:年中的天数
d:月份中的天数
F:月份中的星期
E:星期中的天数
a:Am/pm 标记
H:一天中的小时数
k: 一天中的小时数
K:am/pm 中的小时数
h:am/pm 中的小时数
m:小时中的分钟数
s :分钟中的秒数
S:毫秒数 Number
z:时区
Z:时区

Calendar类
Calendar 类是一个抽象类,不能直接new对象,可以通过他的一个静态成员方法getInstance() 来获取他的对象 Calendar instance = Calendar.getInstance();
public static Calendar getInstance():对Calendar进行实例化的方法
public int get(int field) :获得指定日历字段对应的值
public void add(int field,int amount) :对指定时间进行修改
public final void set(int year,int month,int date) :设置日历时间。格式:年月日

package demo5;
//输出日历的各个要素
import java.util.Calendar;
public class Test2 {
    public static void main(String[] args) {
        Calendar instance=Calendar.getInstance();
        int year=instance.get(Calendar.YEAR);
        int month=instance.get(Calendar.MONTH);
        int day=instance.get(Calendar.DAY_OF_MONTH);
        int hour=instance.get(Calendar.HOUR_OF_DAY);
        int h=instance.get(Calendar.HOUR);
        System.out.println("当前年份:"+year+"年");
        System.out.println("当前月份:"+month+"月");
        System.out.println("当前日期:"+day+"日");
        System.out.println("当前时间(24进制):"+hour+"时");
        System.out.println("当前时间(12进制):"+h+"时");
    }
}
运行结果:
当前年份:2021年
当前月份:4月
当前日期:21日
当前时间(24进制):17时
当前时间(12进制):5时

:月份由从 0 至 11 的整数表示;0 是一月、1 是二月等等;因此 11 是十二月 所以结果中月份是4,但表示的是5月