Day12.StringBuilder类型 、正则表达式

1 StringBuilder类型

  1. 概述:用来表示字符串的类型
  2. 特点:
    (1)是一个可变的字符序列
    类型底层也是通过一个字符数组来维护的数据,维护的数组没有private修饰,而且类中提供了一些公共修改数组值的方法。
    (2)在lang包不需要导包

1.1 StringBuilder构造方法

函数名解释
StringBuilder()创建一个初始值为空的字符串对象,数组的初始大小为 16
StringBuilder(int c)创建一个初始值为空的字符串对象,数组的初始大小是c
StringBuilder(String str)创建一个初始值为str的字符串对象,数组初始大小为str.len+16

1.2 StringBuilder获取长度的方法

概述:StringBuilder对象中维护的是一个字符数组,所以可以获取字符数组的长度和元素的个数。

函数名解释
capacity()返回对象的初始容量
length()返回字符串对象长度

1.3 StringBuilder类型中常用的方法

1、增加方法:

函数名解释
append(int i)在字符串基础上追加数据,可以加任何类型的数据
insert(int offset, char c)在指定索引添加数据

如果对象中维护的数组容量不够存储,就自动扩容数组
扩容方式:原有的长度*2 + 2
添加的索引范围:0----length

2、删除方法:

函数名解释
delete(int start, int end)删除从start开始到end-1结束的字符
deleteCharAt(int index)删除指定索引位置上的字符

3、替换方法:

函数名解释
replace(int start, int end, String str)将指定索引范围的字符换成新的字符串

4、反转方法:

函数名解释
reverse()将字符串在本身的基础进行反转

代码

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

        StringBuilder sb = new StringBuilder("abcd");
        //在原有的字符串基础上,追加数组
        sb.append(100);
        System.out.println(sb);
        //在指定的索引上添加元素
        sb.insert(0,"xyz");
        System.out.println(sb);
        //索引越界异常
//        sb.insert(14,"qqq");
//        System.out.println(sb);
        //删除指定范围内的字符:包含头索引不包含尾索引
        sb.delete(3,7);
        System.out.println(sb);
        //删除指定索引上的字符
        sb.deleteCharAt(0);
        System.out.println(sb);
        //替换指定范围内的内容为新内容
        sb.replace(2,5,"abc");
        System.out.println(sb);
        //将字符串进行反转
        sb.reverse();
        System.out.println(sb);
    }
}

1.4 String类型和StringBuilder类型拼接字符串的效率

  1. 结论:
    使用String类型拼接字符串效率低
    使用Stringbuilder类型拼接字符串效率高
  2. 说明:
    使用String类型拼接字符串,本身是不能直接修改数据,系统默认创建一个可变的字符序列,拼接两个字符串再将可变的字符序列转为String对象。所以这样做,既浪费空间也浪费时间。
    使用Stringbuilder类型拼接字符串,直接在原有的基础上追加或者删除或者修改数据, 节约时间,节约空间。

1.5 String类型和StringBuilder类型的区别

  1. 相同点:
    (1)两个类型都是可以定义字符串
    (2)两个类型对象中都是通过字符数组来维护数据
  2. 不同点:
    (1) String类型是不可变的字符序列类型
    StringBuilder是可变的字符序列类型
    (2) String类型定义的方式有两种(可以接收常量,也可以接收一个堆内存中的对象)
    StringBuilder类型只有一种定义方式(new创建对象)
    (3) String类型拼接效率低
    StringBuilder类型拼接效率高

1.6 StringBuffer和StringBuilder区别【笔试题可能会出】

  1. 两个类型的相同点:
    (1)两个类型都是可变的字符序列
    (2)两个类型中的方法都大致相同
    (3)构造方法也都相同
  2. 不同点:
    (1)StringBuilder是线程不安全
    StringBuffer是线程安全的
    (2)StringBuilder是jdk1.5版本后才有
    StringBuffer是jdk1.0就有
    (3)StringBuilder使用效率高
    StringBuffer使用效率低

1.7 Integer类型中常用的方法

非静态方法:

函数名解释
intvalue()将包装类型的对象转为int类型
doublevalue()将包装类型的对象转为double类型

静态方法:

函数名解释
parseInt(String s)将字符串s转为基本数据类型int
parseInt(String s, int radix)将字符串s当做radix进制转为十进制int
toBinaryString(int i)将十进制的i变量,转为二进制的字符串
toHexString(int i)将十进制的i变量,转为十六进制的字符串
toOctalString(int i)将十进制的i变量,转为八进制的字符串
toString(int i, int radix)将十进制的i变量,转为指定进制的字符串
valueOf(int i)将基本数据类型i转为包装类型对象
ValueOf(String str)将字符串str转为包装类型对象

1.8 自动装箱和自动拆箱【jdk1.5版本及之后版本支持】

  1. 装箱:将基本数据类型包装为引用数据类型的对象

  2. 拆箱:将引用数据类型的对象转为基本数据类型

  3. 自动装箱:直接使用引用数据类型的变量,接收基本数据类型的元素

  4. 自动拆箱:直接使用基本数据类型的变量,接收引用数据类型的对象
    直接使用引用数据类型的对象进行数据的运算

2 正则表达式

  1. 概念:正则表达式是对字符串操作的一种逻辑公式,使用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
  2. 总结:
    (1)正则表达式就是一个字符串
    (2)这个字符串不仅可以用来匹配和自己一模一样的内容,还可以作为模板匹配其他字符串
    (3)别名:规则表达式

2.1 正则表达式中的字符类

  1. 字符:使用引起来的单个符号 char
  2. 字符类:
    (1)使用[]表示某一个单个符号
    (2)不管[]中定义多少个字符,都只能表示其中一个字符

    [abc]:a或者b或者c abc其中一个
    [0-9]:0至9之间的其中一个
    [a-z]:a-z之间的其中一个
    [a-zA-Z$_]:括号中定义的字符只要是其中一个就满足
    [^a-z]:除了a-z字符其中一个
    使用方式:要判断一个字符串是否满足某个正则表达式,需要使用matches方法

2.2 正则表达式中的预定义字符

  1. 预定义字符:用来表示一些常用字符的特殊符号
  2. 罗列:

. :表示所有的单个字符
\d :所有的数字字符 [0-9]
\D :所有的非数字字符 [^0-9]
\s :所有的空格字符
\S:所有的非空格字符
\w:表示0-9a-zA-Z_
\W:除了\w的其中一个字符

  1. 注意:
    以上预定义字符,都只能表示其中一个符号

2.3 数量词

  1. 字符类和预定义字符类都只能表示单个符号,如果需要表示多个符号,需要通过数量词 来修饰。
  2. 分类:
    模糊的数量词
    精确的数量词
  3. 模糊的数量词

X?:x这个字符可以出现0次或者1次
X+:x这个字符出现1次或者多次
X*:x这个字符可以出现0次1次或者多次

  1. 精确的数量词

X{n}:表示x这个字符正好出现n次
X{n,}:表示x这个字符至少出现n次
X{n,m}:表示x这个字符出现n-m次

2.4 正则相关的三个方法

函数说明
matches(String regex)判断调用者字符串是否和定义的正则字符串匹配
split(String s)切割调用者字符串,只要调用者字符串中满足s这个规则都可以进行切割;返回值是一个字符串数组,将切割后的内容存入到字符串数组中
replaceAll(String s1,String s)将满足s1的字符串全部替换成s字符串
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值