一.作用:判断指定的String类型值 是否符合指定的规则存储的公式,正确规则表达式

二.为了避免发开中存在差异,Java提出了一些指定的字符,进行正则的编写

符号含义
^行起始符 (实际开发中不常用)
$行结束符(实际开发中不常用)
[]表示某一个位置 , 当且仅当该位置上只有一种可能 [] 可以省略 ; 一个位置上出现多种可能 | 可以省略
|按位 或 , 表示指定位置上出现多种可能
()表示 连续多个位置,格式的组合 ;出现多种可能的时候 | 一定不能省略
{}数据值的个数范围
{n} -- 表示 正好出现 n 个
{n,} -- 表示 至少出现 n 个
{n,m} -- 至少出现 n 个 至多 出现 m个 包含 m
\d表示 0-9 十个数字
\w表示 A-Z a-z 0-9 _
-表示 A 到 B 包含区间端点
.表示任意的一个符号
+表示至少出现1次 ,等价于 {1,}
\u4e00-\u9fa5表示中文的取值范围 (死记硬背)

三 正则表达式应用

1.方法:由String类提供的

public boolean matches(String regex)

根据指定的正则表达式(regex)判断String类型的值是否合法

四 正则拓展

1.拓展方法:由String类提供

public String[] split(String regex)

根据指定的正则表达式进行String的拆分 String[]

2.需求:给定的String str="00,10,02,-8,5"进行升序排序

import java.util.Arrays;

public class RegexTest {
    public static void main(String[] args) {
        String str="00,10,02,-8,5";
        /**
         * 转换成 字符串数组
         * 分隔符号要一直才可以
         */
        //按照,拆分
        String[] nums=str.split(",");
        System.out.println("排序前:"+ Arrays.toString(nums));
        //Arrays.sort(nums);//不对
        for (int i = 0; i < nums.length; i++) {
            for (int j = 0; j < nums.length-i-1; j++) {
                if(Integer.parseInt(nums[j])>Integer.parseInt(nums[j+1])){
                    String temp=nums[j];
                    nums[j]=nums[j+1];
                    nums[j+1]=temp;
                }
            }
        }
        System.out.println("排序后:"+Arrays.toString(nums));
    }
}

五.StringBuffer和StringBuilder类

1.什么是Buffer/Builder?

缓存(缓冲)技术:由于String底层实现原理 char[],数组一旦创建长度固定,不利于字符串删除或者新增操作,Java提出了缓存技术,在JVM虚拟机中 开辟指定的缓存空间,完成数据的操作,操作完成之后,还给堆栈

2.什么是Builder

对指定的内容重新定义;

3.StringBuffer类和StringBuilder类关系

都是对String类延伸(照抄之后,进行新功能的拓展)

StringBuffer类 对线程操作JDK1.0版本;StringBuilder类似于单线程操作对StringBuffer重新构建JDK5版本

4.StringBuffer类为例演示

①定义格式: public final class StringBuffer{}

②常用API

(1)实例化对象

public StringBuffer()---实例化对象,并创建 缓存区

public StringBuffer(String value)

实例化对象,并且将指定的String存储到缓存区

(2)与String类中同名的方法,参考StringAPI

(3)新增

public StringBuffer append(Object obj)

将任意的数据类型 追加到缓存区的末尾

public StringBuffer insert(int index,object obj)

将任意的数据类型从指定的位置 插入到缓存区中

(4)删除

public StringBuffer delete(int  start,int  end)

删除字符串中指定范围的所有数据 其中包含start 不包含end

public StringBuffer deleteCharAt(int index)

删除指定位置上的字符

(5)修改

public StringBuffer replace(int start,int end,String value)

用指定的字符串 替换 字符串中指定范围的数据,其中包含start不包含end

public void setCharAt(int index,char ch)

使用指定的字符替换原有位置上的字符

public class StringBufferAPITest {
    public static void main(String[] args) {
        StringBuffer sbuf=new StringBuffer("多线程安全");
        //向后追加
        sbuf.append(true).append(3.14);
        System.out.println(sbuf);
        //插入 t的后面
        sbuf.insert(6,666);
        System.out.println(sbuf);

        sbuf.delete(4,15);
        System.out.println(sbuf);
        sbuf.deleteCharAt(3);
        System.out.println(sbuf);


        //替换
        sbuf.replace(0,4,"我是替换者");
        System.out.println(sbuf);
        sbuf.setCharAt(4,'$');
        System.out.println(sbuf);
    }
}

5.StringBuilder

①定义格式:public final class StringBuilder{}

②常用的API与StringBuffer一致

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐