java中正则表达式、Pattern和Matcher类、泛型(Generic)

正则表达式

概述: 正确规则的表达式,在java中我们用字符串来表示。
正则表达式的组成规则: 规则字符在java.util.regex Pattern类中
案例演示: 利用正则去校验qq号码,和不利用正则表达式去校验qq号码对比。

public class Demo {
    public static void main(String[] args) {
//        校验qq号码.
//        1:要求必须是5-15位数字
//        2:0不能开头

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入qq号码:");
        String qq = scanner.nextLine();
        //使用正则表达式判断
        String regex ="[1-9][0-9]{4,14}";
        boolean b = qq.matches(regex);
        if(b){
            System.out.println("qq号码输入正确");
        }else
        {
            System.out.println("qq号码输入错误" );
        }
        //不使用正则表达式判断
        boolean b1=false;
        if(qq.length()>=5&&qq.length()<=15){
             if(!qq.startsWith("0")){
                 for (int i = 1; i < qq.length(); i++) {
                     if(qq.charAt(i)>='0'&&qq.charAt(i)<='9'){
                         b1=true;
                     }
                     else{
                         b1=false;
                         break;
                     }
                 }
             }
             else{
               b1=false;
             }

        }
        else{
           b1=false;
        }
        if(b1){
            System.out.println("qq号码输入正确");
        }else
        {
            System.out.println("qq号码输入错误" );
        }
    }

}

需求:我有如下一个字符串:”91 27 46 38 50”,请写代码实现最终输出结果是:”27 38 46 50 91”

public class Demo5 {
    public static void main(String[] args) {

        String str="91 27 46 38 50";
        String regex=" +";
        String[] strings = str.split(regex);
        int[] ints=new int[strings.length];
        for (int i = 0; i < ints.length; i++) {
            ints[i]=Integer.valueOf(strings[i]);
        }
        Arrays.sort(ints);
        System.out.println(Arrays.toString(ints));

    }
 }

Pattern和Matcher类

正则的获取功能需要Pattern和Matcher类来获取。
通过JDK提供的API查询Pattern类得到的典型的调用顺序
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(string);
boolean b = m.matches();
案例演示:
需求:获取下面这个字符串中由三个字符组成的单词 正则表达式 \\b[a-z]{3}\\b
da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Demo2 {
    public static void main(String[] args) {
//        需求:获取下面这个字符串中由三个字符组成的单词 正则表达式 \\b[a-z]{3}\\b
        da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?
        String regex="\\b[a-z]{3}\\b";
        String string="da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(string);
        while(matcher.find()){
            System.out.println(matcher.group());
        }
    }
}

泛型(Generic)

概述: 是一种把类明确的工作推迟到创建对象,或者调用方法时才去明确的特殊类型。
泛型的格式: <数据类型> 这里的数据类型只能是引用数据类型
泛型好处:
(1): 把运行时期的问题提前到了编译期间
(2): 避免了强制类型转换
(3):优化了程序设计,解决了黄色警告线
注意:泛型只在编译期有效 但在运行期就擦除了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值