包装类&正则表达式&Arrays类

目录

一、包装类

1、包装类的概念

2、为什么提供包装类?

3、包装类的特有功能

二、正则表达式

1、正则表达式概述、初体验

1)、正则表达式的概念

2)、正则表达式的案例

2、正则表达式的匹配规则

1)、字符串对象提供了匹配正则表达式的方法

2)、字符类(默认匹配一个字符)

3)、预定义的字符类(默认匹配一个字符)

4)、贪婪的量词(配合匹配多个字符)

3、正则表达式的常见案例

1)、需求

2)、分析

3)、代码

4)、结果

4、正则表达式在方法中的应用

1)、正则表达式在字符串方法中的使用

5、正则表达式爬取信息

1)、需求

2)、代码

3)、结果

三、Arrays类

1、Arrays类概述,常用API

1)、Arrays类概述

2)、Arrays类的常用API

2、Arrays类对于Comparator比较器的支持

1)、Arrays类的排序方法

2)、自定义排序规则


一、包装类

1、包装类的概念

其实就是8种基本数据类型对应的引用类型。

基本数据类型

引用数据类型

byte

Byte

short

Short

int

Integer

long

Long

char

Character

float

Float

double

Double

boolean

Boolean

2、为什么提供包装类?

Java为了实现一切皆对象,为8种基本类型提供了对应的引用类型。

后面的集合和泛型其实也只能支持包装类型,不支持基本数据类型。

自动装箱:基本类型的数据和变量可以直接赋值给包装类型的变量。

自动拆箱:包装类型的变量可以直接赋值给基本数据类型的变量。

3、包装类的特有功能

包装类的变量的默认值可以是null,容错率更高。

可以把基本类型的数据转换成字符串类型(用处不大)

 可以把字符串类型的数值转换成真实的数据类型(真的很有用)

 

二、正则表达式

1、正则表达式概述、初体验

1)、正则表达式的概念

正则表达式可以用一些规定的字符来制定规则,并用来校验数据格式的合法性。 

2)、正则表达式的案例

需求:假如现在要求校验一个qq号码是否正确,6位及20位之内,必须全部是数字 。

代码:

public class RegexDemo1 {
    public static void main(String[] args) {
        System.out.println(checkQQ("251425998"));
        System.out.println(checkQQ("2514259a98"));
        System.out.println(checkQQ(null));
        System.out.println(checkQQ("2344"));

        System.out.println("-------------------------");

        System.out.println(checkQQ2("251425998"));
        System.out.println(checkQQ2("2514259a98"));
        System.out.println(checkQQ2(null));
        System.out.println(checkQQ2("2344"));

    }

    public static boolean checkQQ2(String qq){
        return qq != null && qq.matches("\\d{6,20}");
    }


    public static boolean checkQQ(String qq){
        // 1、判断qq号码的长度是否满足要求
        if(qq == null || qq.length() < 6 || qq.length() > 20 ) {
            return false;
        }

        // 2、判断qq中是否全部是数字,不是返回false
        //  251425a87
        for (int i = 0; i < qq.length(); i++) {
            // 获取每位字符
            char ch = qq.charAt(i);
            // 判断这个字符是否不是数字,不是数字直接返回false
            if(ch < '0' || ch > '9') {
                return false;
            }
        }

        return true; 
    }
}

结果:

2、正则表达式的匹配规则

1)、字符串对象提供了匹配正则表达式的方法

public boolean matches​(String regex): 判断是否匹配正则表达式,匹配返回true,不匹配返回false。

2)、字符类(默认匹配一个字符)

[abc]           只能是a, b, 或c

[^abc]           除了a, b, c之外的任何字符

[a-zA-Z]               a到z A到Z,包括(范围)

[a-d[m-p]]           a到d,或m通过p:([a-dm-p]联合)

[a-z&&[def]]           d, e, 或f(交集)

[a-z&&[^bc]]           a到z,除了b和c

[a-z&&[^m-p]]     a到z,除了m到p:([a-lq-z]减法)

3)、预定义的字符类(默认匹配一个字符)

.    任何字符

\d    一个数字: [0-9]

\D    非数字: [^0-9]

\s    一个空白字符: [ \t\n\x0B\f\r]

\S    非空白字符: [^\s]

\w    [a-zA-Z_0-9] 英文、数字、下划线

\W     [^\w] 一个非单词字符

4)、贪婪的量词(配合匹配多个字符)

X?    X , 一次或根本不

X*    X,零次或多次

X+    X , 一次或多次

X {n}    X,正好n次

X {n, }    X,至少n次

X {n,m}    X,至少n但不超过m次

3、正则表达式的常见案例

1)、需求

请编写程序模拟用户输入手机号码、验证格式正确,并给出提示,直到格式输入正确为止。

请编写程序模拟用户输入邮箱号码、验证格式正确,并给出提示,直到格式输入正确为止。

请编写程序模拟用户输入电话号码、验证格式正确,并给出提示,直到格式输入正确为止。

2)、分析

定义方法,接收用户输入的数据,使用正则表达式完成检验,并给出提示。

3)、代码

public class RegexTest3 {
    public static void main(String[] args) {
        //目标: 效验 手机号码  邮箱  电话号码
        //mobilePhone();
        //mailBox();
        phone();
    }

    //电话号码校验
    public static void phone(){
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("请您输入您的电话号码:");
            String s = sc.next();
            if(s.matches("0\\d{2,6}-?\\d{5,20}")){
                System.out.println("电话号码校验成功");
                break;
            }else{
                System.out.println("您输入的格式错误!");
            }
        }
    }
    //邮箱校验
    public static void mailBox(){
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("请您输入您邮箱的号码:");
            String s = sc.next();
            if(s.matches("[a-zA-Z0-9]{1,30}@[a-zA-Z0-9]{2,20}(\\.[a-zA-Z0-9]{2,20}){1,2}")){
                System.out.println("邮政校验成功");
                break;
            }else{
                System.out.println("您输入的格式错误!");
            }
        }
    }
    //手机校验
    public static void mobilePhone(){
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("请您输入您的手机号码:");
            String s = sc.next();
            if(s.matches("1[3-9]\\d{9,}")){
                System.out.println("校验成功");
                break;
            }else{
                System.out.println("您输入的格式错误!");
            }
        }
    }
}

4)、结果

 

4、正则表达式在方法中的应用

1)、正则表达式在字符串方法中的使用

方法名

说明

 public String replaceAll(String regex,String newStr)

按照正则表达式匹配的内容进行替换

public String[] split(String regex):

按照正则表达式匹配的内容进行分割字符串,反回一个字符串数组。

5、正则表达式爬取信息

1)、需求

正则表达式爬取信息

2)、代码

public class RegexDemo05 {
    public static void main(String[] args) {
        String rs = "来黑马程序学习Java,电话020-43422424,或者联系邮箱" +
                    "itcast@itcast.cn,电话18762832633,0203232323"+
                    "邮箱bozai@itcast.cn,400-100-3233 ,4001003232";


        //需求:从上面的字符串中爬出电话号和邮箱
        //1、定义爬虫规则,字符串形式
        String regex = "(0\\d{2,6}-?\\d{5,20})|([a-zA-Z0-9]{1,30}@[a-zA-Z0-9]{2,20}(\\.[a-zA-Z0-9]{2,20}){1,2})|" +
                "(1[3-9]\\d{9,})|(400-?\\d{3,9}-?\\d{3,9}) ";

        //2、把这个爬虫编译成匹配对象
        Pattern pattern = Pattern.compile(regex);

        //3、得到一个内容对象
        Matcher matcher = pattern.matcher(rs);

        //4、开始查找
        while (matcher.find()){
            String rs1 = matcher.group();
            System.out.println(rs1);
        }
    }
}

3)、结果

 

三、Arrays类

1、Arrays类概述,常用API

1)、Arrays类概述

 数组操作工具类,专门用于操作数组元素的。

2)、Arrays类的常用API

方法名

说明

public static String toString​(类型[] a)

返回数组的内容(字符串形式)

public static void sort​(类型[] a)

对数组进行默认升序排序

public static <T> void sort​(类型[] a, Comparator<? super T> c)

使用比较器对象自定义排序

public static int binarySearch​(int[] a, int key)

二分搜索数组中的数据,存在返回索引,不存在返回-1

2、Arrays类对于Comparator比较器的支持

1)、Arrays类的排序方法

方法名

说明

public static void sort​(类型[] a)

对数组进行默认升序排序

public static <T> void sort​(类型[] a, Comparator<? super T> c)

使用比较器对象自定义排序

2)、自定义排序规则

设置Comparator接口对应的比较器对象,来定制比较规则。

如果认为左边数据 大于 右边数据 返回正整数

如果认为左边数据 小于 右边数据  返回负整数

如果认为左边数据  等于 右边数据  返回0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

꧁༺๑小王不是程序员๑༻꧂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值