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就出现了,不规范,但再改麻烦