正则表达式和java注解学习小笔记

正则表达式和注解

正则表达式

​ 正则表达式使用单个字符串来表述,匹配一系列符合某个句法规则的字符串。则表达式通常被用来检索,替换那些符合某个模式点的文本。

​ java.util.regex包中提供以下两个类对正则表达式的支持:

​ Matcher类

​ 通常解释Pattern对charactor sequence 执行匹配操作的引擎。

​ Pattern类

​ 正则表达式的编译表示形式。

​ public final class Matcher extends Object implements MatchRsult

​ Matcher类的主要功能是用于进行正则的匹配,通过Pattern类中定义完的正则,在使用Matcher类进行验证或者替换。

常用的方法

boolean matches() 尝试将整个区域与模式匹配

String replaceAll(String replacement) 替换模式与给定替换字符串相匹配的,输入系列的每一个子序列。

String replaceFirst(String replacement) 替换模式与给定替换字符串相匹配的,输入序列的第一个子序列。

实例

@Test
    public void regex_comparto(){
        //创建一个匹配模式
        Pattern p=Pattern.compile("a*b");  //以a打头b结尾的字符串
        //要匹配的字符串
        Matcher matcher = p.matcher("aaaajkkdkb");
        boolean matches = matcher.matches();
        System.out.println(matches);
    }
    @Test
    public void regex_example(){
        //验证电话号码
        String userNumber="010-38389438";
        boolean b = userNumber.matches("\\d{1,3}-\\d{8}");
        System.out.println(b);
        //匹配ip地址
        String ip="20.10.20.123";
        System.out.println(ip.matches("\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3}"));
        //匹配用户名   字母开头,数字字母下划线组合
        String username="abc123456";
        System.out.println(username.matches("[a-zA-z]+[\\w|_]*"));
    }

注解

jdk中自带

​ @override 表示重写父类方法,在编辑期就进行检查

​ @Deprecated 用于标记方法已过时,不建议使用

​ @SuppressWarnings(" ") 表示关闭不当的编辑器警告信息, 注意参数 “all” 消除全部警告信息

​ @Documented 表示的是文档化,可以在生成doc文档的时候添加文档

​ 自定义Annotation

​ 注解应用需要三个步骤

​ 1.编写注解

​ 2.在类上应用注解

​ 3.对应用了注解的类进行反射操作的类

​ 自定义Annotation的语法如下:

​ 访问控制权限 @interface Annotation{}

​ 实例: public @interface MyAnnotation{}

两种形式无默认值和有默认值

//表示该注解的作用该范围在运行时存在
@Retention(RetentionPolicy.RUNTIME)
//无默认值时在使用时要设值
public @interface MyAnnotation {
    //定义变量
    public String name();

    public int age();

}

//有默认值在使用时不用设值
@interface testAnnotation{
    //定义变量
    public String name() default "xioa";

    public int age() default 25;
}

使用MyAnnotation注解

@MyAnnotation(name = "xiao",age = 5)
public class cat {
    //设置名字
    public String name;
    public int age;
    @Deprecated    //标记已过时,不建议使用
    public void Setname(String name){
        this.name=name;
    }
    public void setName(String name){
        this.name=name;
    }
}

测试注解的作用,以及反射和注解的作用

public class Annotation {
    @Test //标记为测试方法
    public void testAnnotation1(){
        cat c=new cat(){
            @Override   //标记为重写方法
            public void setName(String name) {
                this.name="小明";
            }
        };
        c.Setname("小华");  //调用已过时的方法
        System.out.println(c.name);
        c.setName("x");
        System.out.println(c.name);
    }
    //反射来处理注解
    @Test
    public void testAnnotation2(){
        Class<cat> catClass = cat.class;
        //获取类上应用的指定注解
        MyAnnotation annotation = catClass.getAnnotation(MyAnnotation.class);
        //获取注解上的变量值
        int age=annotation.age();
        String name=annotation.name();
        //给对象赋值
        try {
            cat c=catClass.newInstance();
            c.setName(name);
            c.age=age;

            System.out.println(c.name+c.age);

        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    }
}

@Retention
在这里插入图片描述

@Target
在这里插入图片描述

@Inherited
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值