Java 可变长的字符串
在 Java 中,String 是不可变的,而可变长字符串主要通过 StringBuilder 和 StringBuffer 实现,核心是避免频繁创建 String 对象导致的性能损耗。
1. 核心类对比(3 个关键类)
• String:不可变,天然线程安全(无修改操作),效率低(修改时会新生成对象),核心用于存储固定文本、字符串常量。
• StringBuilder:可变,线程不安全(无同步锁),效率高,核心用于单线程环境(如普通业务逻辑、循环拼接字符串)。
• StringBuffer:可变,线程安全(方法加 synchronized 锁),效率低(存在锁开销),核心用于多线程环境(如多线程日志拼接)。
2. 常用核心方法(以 StringBuilder 为例)
• append(Xxx x):追加任意类型数据(如字符串、数字、对象),是最常用的方法。示例:sb.append("年龄:").append(25);,执行后结果为“年龄:25”。
• insert(int offset, Xxx x):在指定位置插入数据。示例:sb.insert(3, "可爱的");,若原字符串为“小猫”,执行后变为“可爱的小猫”。
• delete(int start, int end):删除 [start, end) 区间的字符(遵循左闭右开规则)。示例:sb.delete(2,4);,若原字符串为“abcde”,执行后变为“ace”。
• reverse():反转字符串。示例:sb.reverse();,若原字符串为“abc”,执行后变为“cba”。
• toString():将可变字符串转为不可变的 String,通常在最终输出或存储时使用。
3. 关键注意点
1. String 不可变的原因:其内部用 private final char[] 存储字符,final 修饰确保数组引用不可变,private 修饰限制外部直接修改数组内容,双重保障导致 String 无法被修改。
更多推荐

所有评论(0)