Java学习笔记——day10 正则表达式及常用类

正则表达式:

  • 概念:正确规则的表达式:一门独立的语法,很多语言都支持,

  • 作用:用来定义一些规则,对数据进行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类:

用来封装正则表达式;

Pattern p = Pattern.compile("a*b"); //a多次b一次
//用模式器,获取一个匹配器,把待匹配的字符串传入;
Matcher m = p.matcher("aaaaaaa");
//调用匹配器中的匹配方法,进行匹配
boolean b = m.matches();

System.out.println(b);

匹配器 Matcher类:

  • 如果只是判断一个数据是否符合正则,用String类中的matches(0方法即可
//需求:获取出下面字符串中是三个字母组成的单词
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类:

  • 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(2030)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 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); 

System类:

  • 包含一些常用类字段和方法,不能被实例化,因为没有构造函数,是静态的
//字段:
//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();

BidDecimal类:

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 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类:

  • 针对Date类过时的操作,Java提供了另一个类:Calendar操作日期
//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 bigInteger = new BigInteger(Long.MAX_VALUE + "");
BigInteger bigInteger2 = new BigInteger("100");
BigIntegermultiply = bigInteger.multiply(bigInteger2);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值