Java基础——StringBuilder类型、基本类型的包装类和正则表达式

本文详细介绍了StringBuilder类的特点、构造方法、常用操作方法及与String类的区别,包括拼接效率、线程安全性和基本类型的包装类等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

StringBuilder类型

StringBuilder类型
  1. 概述:用来表示字符串的类型
  2. 特点:
    (1)是一个可变的字符序列
    (2)在lang包不需要导包
    (3)此类中维护也是一个字符数组,用来存储字符串数据
  3. String类型和StringBuilder类型的区别:
    相同点:
    (1)两个类型都可以表示字符串
    不同点:
    (1)String是不可以变的字符序列,本类中没有提供修改成员变量的方法
    (2)StringBuilder是可变的字符序列,因为类中提供了修改成员变量的方法
StringBuilder构造方法
  1. StringBuilder() :
    创建一个初始值为空的字符串对象,数组的初始大小为 16
  2. StringBuilder(int c) :
    创建一个初始值为空的字符串对象,数组的初始大小是c
  3. StringBuilder(String str) :
    创建一个初始值为str的字符串对象,数组初始大小为str.len+16
StringBuilder获取长度的方法
  1. 概述:StringBuilder对象中维护的是一个字符数组,所以可以获取字符数组的长度和元素的个数。
    (1)capacity() :返回对象的初始容量
    (2)length():返回字符串对象长度
StringBuilder类型中常用的方法
  1. 增加方法:
    append(int i) :在字符串基础上追加数据,可以加任何类型的数据
    insert(int offset, char c) :在指定索引添加数据 索引的范围:0-length()
    注意事项:
    如果初始容量不够使用,会自动扩充空间,当前容量*2 + 2
  2. 删除方法:
    delete(int start, int end) :删除从start开始到end-1结束的字符
    deleteCharAt(int index) :删除指定索引位置上的字符
  3. 替换方法:
    replace(int start, int end, String str) :将指定索引范围的字符换成新的字符串
  4. 反转方法:
    reverse() :将字符串在本身的基础进行反转
public static void main(String[] args) {
		StringBuilder sb = new StringBuilder();
		System.out.println(sb.capacity());//16
		System.out.println(sb.length());//0
		sb.append("abcdefg");
		System.out.println(sb);//abcdefg
		sb.insert(0, "heihei");
		System.out.println(sb);//heiheiabcdefg
		sb.insert(3, 100);
		System.out.println(sb);//hei100heiabcdefg
		sb.delete(0, 3);
		System.out.println(sb);//100heiabcdefg
		sb.deleteCharAt(0);
		System.out.println(sb);//00heiabcdefg
		sb.replace(0, 2,"ha");
		System.out.println(sb);//haheiabcdefg
		sb.reverse();
		System.out.println(sb);//gfedcbaiehah
	}
String类型和StringBuilder类型拼接的效率的区别
  1. 效果:
    (1)使用String类型拼接字符串效率低
    (2)使用StringBuilder类型拼接字符串效率高
  2. 原因:
    (1)String类型是一个不可变的字符序列,不能在对象本身基础上进行拼接数据
    系统会默认提供一个StringBuilder对象,拼接,拼接之后转为String对象
    (2)StringBuilder类型是一个可变的字符序列,可以在对象本身基础上拼接数据
StringBuilder和StringBuffer的区别
  1. 共同点:
    (1)都可以表示可变的字符序列
    (2)两个类型中的方法都一样
  2. 不同点:
    (1)版本不同:
    前者是jdk1.5出现
    后者jdk1.0出现
    (2)线程安全性不同:
    前者是线程不安全
    后者是线程安全
    如果在单线程中,使用StringBuilder多一点
    如果在多线程中,使用StringBuffer多一点
    (3)效率问题:
    前者使用效率高
    后者使用效率低

基本类型的包装类

基本类型的包装类
  1. 基本数据类型:四类八种。变量中存储的是数值本身而不是数据的地址。
  2. 基本类型数据类型特点:
    (1)基本数据类型只能表示一个数据,类型中并没有一些特殊的方法来操作数据。
    (2)需要对基本数据类型进行包装升级,包装之后,不仅可以表示数据,也有一 些方法来操作数据。
  3. 包装类型罗列:
12
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean
Integer类型
  1. 概述:
    (1)int类型只能表示一个整数
    (2)Interger类型中不仅维护一个整数,还有一些操作该整数的方法
Integer构造方法
  1. Integer(int value) :通过有参构造给类型中维护的整数赋值
  2. Integer(String s) :通过字符串给整数赋值,但是字符串只能是数字类型的字符串
Integer类型中维护的静态常量
  1. static int BYTES
    用于表示二进制补码二进制形式的 int值的字节数。
  2. static int MAX_VALUE
    一个持有最大值一个 int可以有2^31 -1。
  3. static int MIN_VALUE
    的常量保持的最小值的 int可以具有,-2^31。
  4. static int SIZE
    用于表示二进制补码二进制形式的 int值的位数。
  5. static TYPE
    类原始类型 int的 类实例。
Integer类型中常用的方法
  1. 非静态方法:xxxvalue():将包装类型的对象转为基本数据类型
  2. 静态方法:
    parseInt(String s) :将字符串s通过十进制转为基本数据类型的整数
    parseInt(String s, int radix) :将字符串s当做radix进制转为一个基本数据类型整数
    toBinaryString(int i) :将i通过二进制转为字符串
    toHexString(int i) :将i通过十六进制转为字符串
    toOctalString(int i) :将i通过8进制转为字符串
    toString(int i, int radix) :将i通过指定进制进行转换,转成字符串
    valueOf(String s, int radix) :将字符串s通过指定进制转为一个包装类的对象
自动装箱和自动拆箱(jdk1.5)
  1. 装箱:将基本数据类型包装为引用数据类型的对象
  2. 拆箱:将引用数据类型的对象转为基本数据类型
  3. 自动装箱:直接使用引用数据类型的变量,接收基本数据类型的元素
  4. 自动拆箱:直接使用基本数据类型的变量,接收引用数据类型的对象
    直接使用引用数据类型的对象进行数据的运算

正则表达式

正则表达式
  1. 概念:正则表达式其实就是使用一个字符串表示一类规则
  2. 作用:
    普通的字符串只能表示和本身所表示的数据,但是正则表达式不仅可以表示字符串本身数据,还可以表示一类字符串,可以做为一类字符串的依据
  3. 好处:可以使用简单的代码完成发杂的逻辑
正则表达式中的字符类
  1. 字符类型:使用单引号引起来的单个字符 char
  2. 字符类:
    (1)使用 [] 表示某一个单个符号 [abcdefg]
    (2)不管 [] 中定义多少个字符,都只能表示其中一个字符
  3. 使用方式:要判断一个字符串是否满足某个正则表达式,需要使用matches方法
  4. 注意事项:
    (1)方法的参数中定义的是一个字符串规则
    (2)不管中括号中定义了多少个字符,只能表示其中一个
  5. 举例:
    [abc]:a,b,c其中一个
    [^abc]:除了abc之外的其中一个
    [a-f]:a-f之间的其中一个
正则表达式中的预定义字符
  1. 预定义字符:如果某些字符经常使用,就将这些字符定义为预定义字符
  2. 特点:预定义字符只能表示单个字符
  3. 罗列:
    . :表示所有的单个字符
    \d :所有的数字字符
    \D :所有的非数字字符
    \s :所有的空格字符
    \S:所有的非空格字符
    \w:表示0-9a-zA-Z_
    \W:除了\w的其中一个字符
正则表达式中的数量词
  1. 字符类和预定义字符类都只能表示单个符号,如果需要表示多个符号,需要通过数量词来修饰。
  2. 特点:数量词只能修饰前面的那一个字符
  3. 分类:
    模糊的数量词
    精确的数量词
  4. 模糊的数量词
    X?:x这个字符可以出现0次或者1次
    X+:x这个字符出现1次或者多次
    X*:x这个字符可以出现0次1次或者多次
  5. 精确的数量词
    X{n}:表示x这个字符正好出现n次
    X{n,}:表示x这个字符至少出现n次
    X{n,m}:表示x这个字符出现n-m次
正则相关的三个方法
  1. matches(String s):判断调用者字符串是否和s匹配
  2. split(String s):切割调用者字符串,只要调用者字符串中满足s这个规则都可以进行切割返回值是一个字符串数组,将切割后的内容存入到字符串数组中
  3. replaceAll(String s1,String s):将满足s1的字符串全部替换成s字符串
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值