1.正则表达式
用于验证字符串是否满足自己所需要的规则。方法:matches
注意:\在Java中有特殊涵义,是将其它的意思本来化,假设"是用来引用字符串的,但是你如果想要输出它,那是不是就变成了System.out.println(""");那很明显会报错,这需要加上\就行了,将"的意思本来化,就变成了普普通通的"了。正确形式System.out.println("\"");所有在使用上面的\d,\D,\s等等的时候就需要在它前面加上\。
public class aaa2 {
public static void main(String[] args) {
String r="2161672768";
//qq号是9位到10位的,第一个不为0
System.out.println(r.matches("[0-9]\\d{8,9}"));
}
}
这里的{8,9}表示字符串的后面8个或者9个,也指前面的//d只能出现8次或者9次,因为前面的判断第一个是不是0,用掉了一个字符(【0-9】);
注意:matches(),括号里面的字符串,当然也可以这样。
public class aaa2 {
public static void main(String[] args) {
String r="2161672768";
//qq号是9位到10位的,第一个不为0
// System.out.println(r.matches("[0-9]\\d{8,9}"));
String e="[0-9]\\d{8,9}";
System.out.println(r.matches(e));
}
}
2.爬虫
搜索关键词或者关键句。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class aaa2 {
public static void main(String[] args) {
//有如下文本,请按照要求爬取数据。
String str = "Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和Java11,"
+ "因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台";
//1.获取正则表达式的对象
Pattern p = Pattern.compile("Java\\d{0,2}");//找java,java后面可以有0到2个数字
//2.获取文本匹配器的对象,m:文本匹配器的对象,str:大串,p:规则,m要在str中找符合p规则的小串
// 拿着m去读取str,找符合p规则的子串
Matcher m = p.matcher(str);
//3.利用循环获取
while (m.find()) {
String s = m.group();
System.out.println(s);
}
}
}
结果如下:
拓展1:我们爬虫要爬的数据一般不止一个,matches有很好的解决方法。假设我们要爬虫java\\d{0,2}和c++\\d{0,2}怎么办呢
可以将String r="(java\\d{0,2})|(c++\\d{0,2})",没错中间的|就是你想的那样,类似c的||(或者)功能,在该方法中同样试用。(只有一条|)
拓展2(需求1):String r="java(?=8|11|17)"
?表示java,=表示java后面是否有8或者11或者17,有就爬取,但是这里打印的时候不会将后面的数字打印出来,只会打印java,方式跟之前的一样,只不过规则的字符串变了。
还有将r="((?i)java)(?=8|11|17)"表示忽略java的大小写进行爬取。
拓展3(需求2):String r="((?i)java)(8|11|17)"或者String r="((?i)java)(?:8|11|17)"
拓展4(需求3)String r="((?i)java)(?!8|11|17)
拓展5:贪婪和非贪婪爬取
拓展6:捕获分组和非捕获分组
3.时间
获取当前时间:Date r=new Date(); long time =r.getTime(); 计算现在距离起始时间过了多少毫秒
修改距离起始时间的毫秒值 r.setTime(毫秒值);
long的通常要加上大写或者小写的l,L更加显眼。
该方法打印结果如下:
修改后可运用到项目的如下;(默认)
日期的相关标识符:
自定义时间格式如下:
字符串设置时间格式:(方法中的格式要更字符串一样否则会报错)
4.包装类
包装类(Wrapper Class)在Java中是一种特殊的类,它们用来将基本数据类型包装成对象。主要的包装类有 Integer
、Long
、Float
、Double
、Boolean
、Character
、Byte
和 Short,分别对应基本数据类型int,long,float,double,boolean,char,byte,short。
作用:
1.将基本数据类型转换为对象
2.提供了方法来操作基本数据类型
3.支持泛型编程
4.提供了常量和静态方法
5.实现了一些接口
6.自动装箱和拆箱
装箱指将基本数据类型转换成包装对象,拆箱指将包装对象转换成基本数据练习。自动指他们创建出来后,在使用时,底层逻辑会自动转化,不需要自己手动转化。
5.工具类之Arrays
6.Lambda
Lambda 表达式使得 Java 语言在编程风格上更加现代化和函数式,提升了代码的简洁性、可读性和并行处理的能力,是 Java 8 版本中一个重要的语言特性。
注意:
1.Lambda表达式可以用来简化匿名内部类的书写
2.Lambda表达式只能简化函数式接口的匿名内部类的写法
3.函数式接口:有且仅有有一个抽象方法的接口叫做函数式接口,接口上方可以加@FunctionalInterface注解