1.接口
1.1接口概述
- 个人认为接口和抽象类类似,但是接口不是类,接口中定义了一些未实现的方法,需要注意的是接口中不能包含实例域或者静态方法,但是可以包含常量。
e.g定义接口的方式:
public interface Comparable{
int compareTo(Object other);
}
- 接口中的方法都是public默认可以不写访问修饰符。
1.2接口与抽象类的区别
- 接口中不能包含实例域,但是抽象类中可以包含实例域。
- 一个类可以实现多个接口,但是只能继承一个父类。
- 抽象类可以有构造器,接口不存在构造器。
- 抽象方法实现方式不同,抽象类通过继承,extends,接口通过实现,implements。
- 接口和抽象类都不能实例化,但是都能声明相应类型的引用变量。
e.g 实现一个接口
public class Compare implements Comparable{
private int x;
public int compareTo(Integer y){
if(this.x>y){
return 1;
}else if(this.x==y){
return 0;
}else{
return -1
}
}
}
2正则表达式
2.1什么是java的正则表达式
- 正则表达式就是规定了字符串的模板,利用正则表达式可以达到匹配和验证字符串的效果
2.2java的正则表达式有哪些作用
2.3如何使用正则表达式
- 首先使用正则表达式需要声明一个模板,就是需要匹配什么样的数据。这个模板在java中的类是Pattern,可以通过
Pattern regex=Pattern.complie("正则表达式");
来创建匹配模板,需要匹配的数据需要调用regex变量的matcher方法(返回一个Matcher类的对象)来获得一个匹配器并传入数据。e.g. Matcher matcher=regex.matcher("需要匹配的数据");
匹配成功的字符串能通过matcher.group();
获取。以下有常用的几个方法 matcher.find();//返回是否匹配成功的boolean值,匹配成功则返回true。这里需要注意的是在获取其他匹配结果之前必须要先执行这个方法否则会抛出异常IllegalStateException("No match found")。
matcher.find(0);//表示从第一个字符开始匹配
matcher.start();//返回开始匹配到第一个字符串的索引值;.end();返回最后一个匹配到的索引值+1
- 一些常用的正则表达式的书写规则:(前面添加反斜杠来转译)
\. | 匹配所有 |
---|
[abc] | 出现a或者b或者c |
[^abc] | 匹配除了a、b、c外所有的字符 |
[a-zA-Z_0-9] | 范围匹配,大小写字母和所有数字下划线 |
\\. | 匹配 . |
\\d | 数字[0-9] |
\\w | 大小写字母还有数字 |
c? | c出现一次或者零次 |
c* | c出现零次或多次 |
c+ | c出现一次或者多次 |
c{n} | c刚好出现n次 |
c{n,} | c出现n次及以上 |
c{n,m} | c至少出现n次但不超过m次 |
public class TestRegx {
public static void main(String[] args) {
String regexString=
"^(\\w+)@(\\d+)\\.\\w+$";
String email="mm163@163.com";
Pattern regex=Pattern.compile(regexString);
Matcher matcher=regex.matcher(email);
while(matcher.find()){
System.out.println(matcher.group());
String newEmail=matcher.group();
String newRegex="\\d+";
String s="*";
String result=newEmail.replaceAll(newRegex,s);
System.out.println(result);
}
}
}