day14-1学习过程笔记

本文深入解析正则表达式的规则与应用,涵盖字符、字符类、预定义类、边界匹配及数量词等内容,并演示其在字符串操作中的功能。同时,探讨Math类与Random类的使用技巧,以及System类的实用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.正则表达式(理解) //一般不会写,但要看得懂

  • 符合一定规则的字符串,规则字符在java.util.regex Pattern类中

  • 常见规则

  • 字符

    	x 	字符 x			举例:'a'表示字符a
    	\\ 	反斜线字符
    	\n 	换行符 	('\u000A') 
    	\r 	回车符 	('\u000D')
    
  • 字符类

     [abc] 	 	a、b 或 c(简单类) 		//三选一
     [^abc] 	任何字符,除了 a、b 或 c(否定) 
     [a-zA-Z] 	a到 z 或 A到 Z,两头的字母包括在内(范围) 
     [0-9] 		0到9的字符都包括在内		
    
  • 预定义字符类

     . 	任何字符			//那么,.这个字符本身怎么表示呢? \\.
     \d  数字:[0-9]
     \w 单词字符:[a-zA-Z_0-9]	//表示:正则表达式里面组成单词的东西必须有这些组成
    
  • 边界匹配器

     	^ 	行的开头 
     	$ 	行的结尾 
     	\b 	单词边界			//不是单词字符的地方
     				 例:hello world?haha;xixi,空格,问号等就是单词边界
    
  • Greedy 数量词

     	X? X,			一次或一次也没有
     	X* X,			零次或多次			//不包括一次
     	X+ X,			一次或多次
     	X{n} X,		恰好 n 次 
     	X{n,} X,		至少 n 次 
     	X{n,m} X,		至少 n 次,但是不超过 m 次 
     	X				没给就是1次
    
  • 常见功能:(分别用的是谁呢?)

  • 判断功能,String类的public boolean matches(String regex):告知此字符串是否匹配String regex的规则

    如:校验邮箱:day14_Regex的cn.itcast_02的RegexTest

  • 分割功能,String类的public String[] split(String regex):根据String regex的规则拆分此字符串

    如:拆分范围:day14_Regex的cn.itcast_03的RegexDemo
    分割字符串:day14_Regex的cn.itcast_03的RegexDemo2
    分割字符串并排序:day14_Regex的cn.itcast_03的RegexTest //重点看

    注意://硬盘上的路径,我们应该用\替代\

  • 替换功能,String类的public String replaceAll(String regex,String replacement):使用给定的replacement替换此字符串所有匹配给定的正则表达式的子字符串

    如:论坛屏蔽某些字符:day14_Regex的cn.itcast_04

  • 获取功能,Pattern类和Matcher类的 //用这个要导包

    如:获取一个字符串中由三个字符组成的单词:day14_Regex的cn.itcast_05

    Pattern p = Pattern.compile(“a*b”);
    Matcher m = p.matcher(“aaaaab”);
    find():查找存不存在
    group():获取刚才查找过的数据 //一定要先find(),然后才能group()

2.Math类(掌握) //不用导包

  • 概述:见day08-1第1点
  • 成员变量:
  • public static final double PI
  • public static final double E
  • 常用的成员方法:
  • public static int abs(int a):绝对值 //每个数据类型都有,以int为例
  • public static double ceil(double a):向上取整 [可能面试]
  • public static double floor(double a):向下取整 [可能面试]
  • public static int max(int a,int b):最大值 //用方法的嵌套调用,可以获取n个数中的最大值
  • public static int min(int a,int b):最小值
  • public static double pow(double a,double b):a的b次幂
  • public static double random():随机数 [0.0,1.0)
  • public static int round(float a) 四舍五入(参数为double的自学) [可能面试]
  • public static double sqrt(double a):正平方根
  • 面试题:
  • 实现获取任意范围内的随机数:day14_Math的cn.itcast_02

3.Random类(理解) //不用导包

  • 概述:此类用于产生随机数
    如果用相同的种子创建两个Random实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列

  • 构造方法:

  • public Random():没有给种子,用的是默认种子,是当前时间的毫秒值

  • public Random(long seed):给出指定的种子

    可能面试:给种子和没给种子的区别?
    答:给定种子后,种子相同,每次得到的随机数就相同

  • 成员方法:

  • public int nextInt():返回的是int范围内的随机数

  • public int nextInt(int n):返回的是[0,n)范围的内随机数 //不包括n
    所以实现获取任意范围内的随机数就变得更容易:

    	Random r = new Random(1111);	//给个long范围的参数就行
    	int num = r.nextInt(100) + 1;	//1到100之间
    

4.System类(掌握) //不用导包

  • 概述:System 类包含一些有用的类字段和方法。它不能被实例化(因为没有构造方法,成员都是静态的)

  • 成员方法:

  • public static void gc():运行垃圾回收器 //了解就好(ppt第七章第40页的备注),因为我们开发时一般没有到要自己手动清理垃圾的地步

  • public static void exit(int status):终止当前正在运行的 Java 虚拟机。参数用作状态码;根据惯例,非0的状态码表示异常终止(0表正常终止)

  • public static long currentTimeMillis():返回以毫秒为单位的当前时间 //当前时间与协调世界时1970年1月1日午夜之间的时间差

    小知识:日期类的时间为什么都从1970年1月1日开始?
    java起源于UNIX系统,而UNIX认为1970年1月1日0点是时间纪元
    最初计算机操作系统是32位,而时间也是用32位表示,不过现在用64位(可以用到千亿年以后了)

    单独得到毫秒的实际目前对我们来说意义不大
    	// 它可以应用在统计一段程序的运行时间(虽然java中有更专业的方式,但这也是它的一种应用)
    	long start = System.currentTimeMillis();
    	for (int x = 0; x < 100000; x++) {
    		System.out.println("hello" + x);
    	}
    	long end = System.currentTimeMillis();
    	System.out.println("共耗时:" + (end - start) + "毫秒");
    }
    
  • public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length):从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束(目标数组的原索引处的数会被替代):day14_System的cn.itcast_03 //这个方法名1.0就出现了,不规范,但再改麻烦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值