概念:正确规则的表达式:一门独立的语法,很多语言都支持,
作用:用来定义一些规则,对数据进行i校验;
语法:Java中,用字符串来定义正则;
String regx = "a"; //用来匹配单个字符
regx = "[a, b, c]"; //这个集合中所罗列的任意一个字符
regx = "[a-z]"; //26个字母的集合
regx = "[0-9]"; //0,1,2,3,4,5,6,7,8,9
regx = "[a-z A-Z 0-9]";
regx = "[^a-z]";//只要不是小写字母就行,^取反的意思
regx = "."; //匹配任意单个字符;
regx = "\\."; //只匹配点本身 \\转义字符
regx = "|"; // |代表或者 需要代表竖线本身需要加入转义字符
regx = "\\d"; //跟【0-9】意思相同
regx = "\\w"; //跟【a-zA-z_0-9】意思一样,代表的是a-z,A- Z,_,0-9
regx = "\\W"; //对“\\w”取反
//类Patern
//加量词辅助,匹配多个字符
regx = "a+"; //代表一个或多个a(至少一个a)
regx = "a*"; //代表零次或多次(可以出现零次,一次也算多次)
regx = "a?"; //一次或者一次也没有(最多一次)
regx = "[a-zA-Z]{5}"; //无论大写还是小写只需要5个多少都不行
regx = "[0-9]{5,}"; //至少五次,只有下限,没有上限
regx = "[a-zA-Z]{5,15}"; //5 <= 次数 <= 15
boolean b = "aaa".meches(regx);
System.out.println(b); //false;
/*
需求:校验QQ号,
1.要求必须是5-15为数字
2.0不能开头
*/
String qqRegx = "[1-9][0-9]{4,14}";
//手机校验
String phoneRegx = "[1][3, 5, 7, 8, 9][0-9]{9}";
/*
需求:校验邮箱
1.6-18个字符,可使用字母,数字,下划线,需以字母开头
*/
//xibukaiyuan@163
String regx = "[a-zA-Z]\\w{5,17}@163\\.(com|net|cn|org)";
// \\.为整体,代表.
//身份证正则:
String id = "[1-9]\\d{5}(18|19|([23]\\d))\\d{2}((0[1-9]|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]";
//根据正则来截取字符串 split();
String regx = "喜欢你=放弃你=忘记你";
String[] strings = str.split(=);
System.out.println(strings[0]);
System.out.println(strings[1]);
System.out.println(strings[2]);
//根据正则表达式来替换 replaceAll()
String str = "aaa sd fdsf 11";
//去掉上面字符串的中间空格
//常规方法
String replace = str.repalce(" ", "");
System.out.println(replace);
//正则方法:
String s = str.replaceAll(" +", ""); //将空格替换为空串
System.out.println(s);
用来封装正则表达式;
Pattern p = Pattern.compile("a*b"); //a多次b一次
//用模式器,获取一个匹配器,把待匹配的字符串传入;
Matcher m = p.matcher("aaaaaaa");
//调用匹配器中的匹配方法,进行匹配
boolean b = m.matches();
System.out.println(b);
//需求:获取出下面字符串中是三个字母组成的单词
String str = "da jia ting wo shuo, jin tian xia yu, bu shang wan zi xi, gao xing ma?";
//常规方法
String[] string = str.split("[^a-z]+");
for(int i = 0; i < string.length; i++){
if(string[i].length == 3){
System.out.println(string[i]);
}
}
//正则方法:
//定义三个字母的正则
String regx = "\\b[a-z]{3}\\b"; //加边界\\b***\\b
//封装正则表达式到模式器
Pattern p = Patttern.compile(regx);
//根据模式器获取匹配器,传入待操作数据
Matcher matcher = p.matcher(str);
//查找
//boolean find(); 查找与该模式匹配的输入序列的洗衣歌子序列
boolean b = matcher.find();
System.out.println(b);
//截取中符合正则的数据
//Stirng group(); 返回由以前匹配操作所匹配的输入子序列
String s = matcher.group();
System.out.println(s);
boolean b = matcher.find();
System.out.println(b);
s = matcher.group();
System.out.println(s);
while(matcher.find()){
String group = matcher.group();
System.out.println(group);
}
Math类包含用于执行基本数学运算的方法,如初等指数,对数,平方根
属性和方法全是静态修饰,直接使用类名调用
//属性:
double pi = Math.PI;
double e = Math.E;
//方法:
//获取最值
int max = Math.max(20, 30);
int min = Matn.min(20, 10);
int max1 = Math.max(math.max(20, 30), 90);
//向上取整
System.out.println(math.ceil(3.14));
//向下取整
System.out.println(math.floor(3.14));
//取绝对值
System.out.println(math.abs(-1));
//四舍五入
System.out.println(math.round(3.14)+"====");
//随机取数
Math.random();
//求一个数的几次方
System.out.println(math.pow(2, 3));
//求一个数的平方根
System.out.println(math.sqrt(4));
//求一个数的立方根
System.out.println(math.pow(8, 1 / 3.0));
//返回三角余弦
Math.cos(Math.Pi/3.0);
Random random = new Random();
//生成随机
int i = random.nextInt(); //int类型范围
int j = random.nexrInt(100); //指定范围【0-99】
double v = random.nextDouble(); //生成随机小数0-1之间
boolean b = random.nextBoolean();//生成随机boolean
//Random(long seed) 使用单个long种子创建一个新的随机数生成器
//传入参数每次重新运行生成的随机数就不变,传入的参数不同生成的不同
Random random = new Random(1L);
//字段:
//in 标准输入流,此流已打开并准备提供输入数据。通常,此流对应键盘
InputStream in = System.in;
//out 标准输出流,此流已打开并准备提供输出数据。通常,此流对应显示器
PrintStream out = System.out;
// 方法:
//static void exit(int status) 终止当前正在运行的Java虚拟机
System.exit(0); //0是正常退出; 非0强制退出
//gc();
System.gc(); //运行垃圾回收器
//获取当前系统时间的毫秒值
//获取从 1970年,1月1日 00:00:00到当前日期的一个间隔毫秒值
System.currentTimeMillis();
double a = 10;
double b = 3;
System.out.println(a / b); //精度达不到要求
BigDecimal num1 = new BigDecimal(10);
BigDecimal num1 = new BigDecimal(3);
BigDecimal add = num1.add(num2); //加
BigDecimal sub = num1.subtract(num2); //减
BigDecimal mul = num1.multiply(num2); //乘
BigDecimal div = num1.divide(num2); //整除
//如果不能整除,需要去哦定义保留的位数。和取舍模式
BigDecimal div = num1.divide(num2, 30, BigDecimal.ROUND_HALF_DOWN); //除
//Date() 表示年月日 时分秒
//分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)
Date date = new Date();
System.out.println(date); //打印当前日期;
//Date(long date)
//分配Date对象并初始化,以表示自从标准基时间(称为”历元(epoch0)",即1970年1月1日00:0:00 GMT)以来的指定毫秒数
//计算机元年上加入相应的时间量
Date date = new Date(1000 * 60 * 60 * 24);
System.out.println(date);
@Deprecated //用来表示此类/方法过时
//方法:
Date date = new Date();
//获取从1970.1.1 00:00:00到现在的时间之间的间隔毫秒值
long time = date.getTime();
//给计算机元年,加上相应的时间量
date.setTime1000 * 60 * 60 * 24);
//Date ----> long
//调用getTime()
//Long ----> Date
//调用setTime()
Date ------> String 把日起对象,转换为日期字符串
//将日期格式化称我们的阅读习惯:
//使用格式化日期的类,进行格式化
//创建一个格式化日期的类的对象,使用的是空参构造,那么格式化日期时,是按照默认的格式
//来实现格式化
SimpleDateFormat dateFormat = new SimpleDateFormat();
String datetime = dateFormaT.format(date);
System.out.println(datetime);
//若默认格式不习惯,可以指定格式
//使用有参构造传入格式:
SimpleDateFormat dateFormat = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss“);
//format(); 把当前日期,按照指定格式,格式化成一个日期字符串;
String datetime = dateFormaT.format(date);
System.out.println(datetime);
//String---->Date 把日期字符串解析为日期对象
String dateStr = "2015-10-10 14:20:20";
//在解析日期字符串时,注意日期格式和字符串对应, 如果对不上,就无法解析
SimpleDateFormat dateFormat = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss“);
//parse();把日期字符串,解析成日期对象
Date date = dateFormat.parse(dateStr); //抛出异常即可;
System.out.println(date);
//Calendar中有一个静态方法getInstance()可以获取该类的一个子类对象
Calendar instance = Calendar.grtInstance();
System.out.println(instance);
//get()方法
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 min = instance.get(Calendar.MINUTE);
int s = instance.get(Calendar.SECOND);
//set()方法:
//设置年月日时分秒
instance.set(2011, 12, 12);
//add();给对应字段,加上或减去时间量
//给当前日期添加或减去时间量:
instance.add(Calendar.YEAR, 1); //给年加1年 没有减,可以加负数
BigInteger bigInteger = new BigInteger(Long.MAX_VALUE + "");
BigInteger bigInteger2 = new BigInteger("100");
BigIntegermultiply = bigInteger.multiply(bigInteger2);