String和StringBuffer

1. String

String 是不可变的(immutable),即一旦创建,其内容就不能被修改。每次对 String 的操作(如拼接、替换等)都会生成一个新的 String 对象。

常用方法
构造方法
  • String():创建一个空字符串。

  • String(String original):根据给定的字符串创建一个新字符串。

  • String(char[] value):根据字符数组创建字符串。

  • String(byte[] bytes):根据字节数组创建字符串。

常用方法
  1. 长度相关

    • int length():返回字符串的长度。

  2. 查找和比较

    • boolean equals(Object obj):比较字符串内容是否相等。

    • boolean equalsIgnoreCase(String anotherString):忽略大小写比较字符串内容。

    • int compareTo(String anotherString):按字典顺序比较字符串。

    • boolean contains(CharSequence s):判断字符串是否包含指定字符序列。

    • int indexOf(String str):返回指定子字符串第一次出现的索引。

    • int lastIndexOf(String str):返回指定子字符串最后一次出现的索引。

  3. 截取和分割

    • String substring(int beginIndex):从指定索引开始截取子字符串。

    • String substring(int beginIndex, int endIndex):截取指定范围的子字符串。

    • String[] split(String regex):根据正则表达式分割字符串。

  4. 替换和转换

    • String replace(char oldChar, char newChar):替换字符。

    • String replaceAll(String regex, String replacement):根据正则表达式替换字符串。

    • String toLowerCase():将字符串转换为小写。

    • String toUpperCase():将字符串转换为大写。

    • String trim():去除字符串两端的空白字符。

  5. 其他

    • char charAt(int index):返回指定索引处的字符。

    • boolean isEmpty():判断字符串是否为空。

    • String concat(String str):将指定字符串连接到当前字符串末尾。


2. StringBuffer

StringBuffer 是可变的(mutable),适合频繁修改字符串内容的场景。它是线程安全的(synchronized),适合多线程环境。

StringBuffer 类本身没有 contains 方法StringBuffer 主要用于可变字符串的操作,比如追加、插入、删除字符等

常用方法
构造方法
  • StringBuffer():创建一个空的 StringBuffer,初始容量为 16。

  • StringBuffer(int capacity):创建一个指定容量的 StringBuffer

  • StringBuffer(String str):根据指定字符串创建 StringBuffer

常用方法
  1. 长度和容量

    • int length():返回当前字符串的长度。

    • int capacity():返回当前容量(可存储的字符数)。

    • void ensureCapacity(int minimumCapacity):确保容量至少为指定值。

  2. 追加和插入

    • StringBuffer append(String str):在末尾追加字符串。

    • StringBuffer append(int i):在末尾追加整数。

    • StringBuffer insert(int offset, String str):在指定位置插入字符串。

  3. 删除和替换

    • StringBuffer delete(int start, int end):删除指定范围的字符。

    • StringBuffer deleteCharAt(int index):删除指定索引处的字符。

    • StringBuffer replace(int start, int end, String str):替换指定范围的字符。

  4. 反转

    • StringBuffer reverse():反转字符串。

  5. 其他

    • void setLength(int newLength):设置字符串的长度。

    • void setCharAt(int index, char ch):设置指定索引处的字符。

    • char charAt(int index):返回指定索引处的字符。

    • String substring(int start):从指定位置截取子字符串。

    • String substring(int start, int end):截取指定范围的子字符串。


3. StringStringBuffer 的区别

特性StringStringBuffer
可变性不可变可变
线程安全线程安全(因为不可变)线程安全(方法使用 synchronized
性能适合少量操作适合频繁修改
内存开销每次修改都会创建新对象修改时不会创建新对象
常用场景字符串常量、少量操作频繁修改字符串、多线程环境

4. 示例代码

String 示例

java

复制

String str = "Hello";
str = str.concat(" World"); // 创建新对象
System.out.println(str); // 输出: Hello World

StringBuffer 示例

java

复制

StringBuffer sb = new StringBuffer("Hello");
sb.append(" World"); // 直接修改原对象
System.out.println(sb); // 输出: Hello World

5. 总结

  • 如果需要频繁修改字符串内容,使用 StringBufferStringBuilder(非线程安全,性能更高)。

  • 如果字符串内容不需要修改,使用 String

  • 根据具体场景选择合适的类,可以提升性能和代码可读性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值