JavaSE进阶8之包装类、正则表达式

包装类

  • 其实就是8种基本数据类型对应的引用类型
    请添加图片描述
    原因
  • Java为了实现一切皆对象,为8种基本类型提供了对应的引用类型
  • 后面的集合和泛型其实也只能支持包装类,不支持基本数据类型

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

包装类的特有功能

  1. 包装类的变量的默认值可以是null,容错率更高
  2. 可以把基本类型的数据转换成字符串类型请添加图片描述
  3. 可以把字符串类型的数值转换成真实的数据类型
    请添加图片描述
package com.echo.d4_javase.use_Integer;

public class demo1 {
    public static void main(String[] args) {
        int i1=11;
        Integer i2=12;
        Integer i3=i1;  //自动装箱
        int i4=i3;   //自动拆箱
        System.out.println(i1);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println(i4);

        double d1=11.25;
        Double d2=12.25;
        Double d3=d1;  //自动装箱
        double d4=d2;  //自动拆箱
        System.out.println(d1);
        System.out.println(d2);
        System.out.println(d3);
        System.out.println(d4);
        System.out.println("--------------------------");

        //int a=null; 报错
        Integer a=null;
        Integer b=11;
        String s = Integer.toString(b);
        System.out.println(s+5);
        Double c=11.5;
        String s1 = Double.toString(c);
        System.out.println(s1+3.2);
        Integer d=125;
        String s2 = d.toString();
        System.out.println(s2+123);
        String s3=d+"";
        System.out.println(s3+123);
        System.out.println("--------------------------");

        String num="335";
        String num1="33.266";
        String correct="true";
        //字符串转换为数字
        int i = Integer.parseInt(num) + 5;
        double j=Double.parseDouble(num1)+5.5;
        boolean k=!Boolean.parseBoolean(correct);
        System.out.println(i);
        System.out.println(j);
        System.out.println(k);
    }
}

请添加图片描述

正则表达式

正则表达式概述、初体验

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

初体验

  • 需求:假如现在要求校验一个qq号码是否正确,6位及20位之内,必须全部是数字
  • 先使用目前所学知识完成校验需求;然后体验一下正则表达式校验
package com.echo.d4_javase.use_Integer;

import java.util.Scanner;

public class demo2 {
    public static void main(String[] args) {
        while (true) {
            System.out.println("请输入你的qq号码:");
            Scanner sc = new Scanner(System.in);
            String qq = sc.next();
            if(checkQQnum2(qq)){
                break;
            }else
                continue;
        }

    }

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


    public static boolean checkQQnum1(String qq){
        if(qq==null||qq.length()>20||qq.length()<6){
            return false;
        }
        for (int i = 0; i < qq.length(); i++) {
            char a=qq.charAt(i);
            if(a<'0'||a>'9'){
                return false;
            }
        }
        return true;
    }


    public static boolean checkQQnum(String qq)
     {
            if(qq==null||qq.length()<6||qq.length()>20){
                System.out.println("出错了。。。qq号码必须是6-20位的");
                return false;
            }
            boolean isErr=false;
            for (int i = 0; i < qq.length(); i++) {
                char c = qq.charAt(i);
                try{
                    Integer a=Integer.parseInt(String.valueOf(c));
                }catch (Exception ex){
                    System.out.println("出错了。。qq号码必须是数字");
                    isErr=true;
                    break;
                }
            }
            if(!isErr){
                System.out.println("qq号码输入正确");
                return true;
            }else{
                return false;
            }
    }
}

请添加图片描述

正则表达式的匹配规则

请添加图片描述

正则表达式的常见案例

案例 请使用正则表达式完成如下需求

需求
  1. 请编写程序模拟用户输入手机号码,验证格式正确,并给出提示,直到格式输入正确为止
  2. 请编写程序模拟用户输入邮箱号码,验证格式正确,并给出提示,直到格式输入正确为止
  3. 请编写程序模拟用户输入电话号码,验证格式正确,并给出提示,直到格式输入正确为止
分析
  • 定义方法,接收用户输入的数据,使用正则表达式完成检验,并给出提示
package com.echo.d4_javase.use_regx;

import java.util.Scanner;

public class demo1 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
//        checkPhone(sc);
//        checkEmail(sc);
        checkLandline(sc);
    }



    public static void checkPhone(Scanner sc){
        while (true) {
            System.out.println("请输入您的手机号");
            String phone = sc.next();
            if(phone.matches("1[3-9]\\d{9}")){
                System.out.println("手机号格式正确,注册成功!");
                break;
            }else{
                System.out.println("格式有误");
            }
        }
    }

    public static void checkEmail(Scanner sc){
        while(true){
            System.out.println("请输入邮箱账号:");
            String email=sc.next();
            if(email.matches("\\w{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 checkLandline(Scanner sc){
        while(true){
            System.out.println("请输入您的电话号:");
            String call=sc.next();
            if(call.matches("0\\d{2,6}-?\\d{5,20}")){
                System.out.println("电话号格式正确,注册成功!");
                break;
            }else
                System.out.println("格式有误");
        }
    }
}

请添加图片描述请添加图片描述
请添加图片描述

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

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

  1. public String replaceAll(String regex,String newStr)
    按照正则表达式匹配的内容进行替换
  2. public String[] split(String regex)
    按照正则表达式匹配的内容进行分割字符串,返回一个字符串数组
package com.echo.d4_javase.use_regx;

public class demo2 {
    public static void main(String[] args) {
        String a="王五dlkfl_dcl__1326张三154562ldjf_klj__李四xmfndk_ld6523";
        String[] arrs=a.split("\\w+");
        for (String arr : arrs) {
            System.out.println(arr);
        }
        String a1=a.replaceAll("\\w+"," ");
        System.out.println(a1);
    }
}

请添加图片描述

正则表达式爬取信息

package com.echo.d4_javase.use_regx;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class demo3 {
    public static void main(String[] args) {
        String rs="来一起学习Java,电话020-432165526,或者联系邮箱"+
                "abckdkk@baidu.com,电话18762832633,0203232585222"+
                "邮箱Boszi@baidu.cn,400-100-3233 , 400100032232";
        //爬取出 电话号码 和 邮箱 和 手机号 和 400开头的电话号
        //1.定义爬取规则,字符串形式
        String regx="(\\w{1,30}@[a-zA-Z0-9]{2,20}(\\.[a-zA-Z0-9]{2,20}){1,2})|" +
                "(1[3-9]\\d{9})|" +
                "(0\\d{2,6}-?\\d{5,30})|" +
                "(400-?\\d{3,9}-?\\d{3,9})";
        //2.把这个爬取规则编译成匹配对象
        Pattern pattern=Pattern.compile(regx);
        //3.得到一个内容匹配器对象
        Matcher matcher = pattern.matcher(rs);
        //4.开始找了
        while (matcher.find()) {
            String rs1=matcher.group();
            System.out.println(rs1);
        }
    }
}

请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java字符串按正则表达式进行处理的方法有以下几种: 1. 使用String类的split()方法。这个方法可以将字符串按照指定的正则表达式进行分割,返回一个字符串数组。例如,假设有一个字符串str,我们想按照逗号进行分割,可以使用如下代码: ``` String[] parts = str.split(","); ``` 2. 使用Pattern和Matcher类。Pattern类表示编译后的正则表达式,而Matcher类提供了对字符串进行匹配的方法。可以使用Pattern的compile()方法将正则表达式编译成Pattern对象,然后使用Matcher的matches()、find()或group()等方法进行匹配和提取。例如,假设有一个字符串str,我们想提取其中的数字,可以使用如下代码: ``` Pattern pattern = Pattern.compile("\\d+"); // 匹配数字 Matcher matcher = pattern.matcher(str); while (matcher.find()) { String match = matcher.group(); // 处理匹配到的字符串 } ``` 3. 使用String类的replaceAll()方法。这个方法可以将字符串中符合正则表达式的部分替换成指定的字符串。例如,假设有一个字符串str,我们想将其中的空格替换成逗号,可以使用如下代码: ``` String replaced = str.replaceAll("\\s+", ","); ``` 请注意,以上方法都是基于Java中的正则表达式处理相关的类和方法,使用正则表达式需要掌握正则表达式的语法规则和常用的模式匹配方式。另外,如果对字符串处理涉及到更复杂的操作,建议深入学习正则表达式的用法和相关的Java类库方法。 参考资料: Java官方文档 - String类: https://docs.oracle.com/javase/8/docs/api/java/lang/String.html Java官方文档 - Pattern类: https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html Java官方文档 - Matcher类: https://docs.oracle.com/javase/8/docs/api/java/util/regex/Matcher.html

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值