Java String 不可变特性与字符串拼接区别

Java 的 String 类是不可变的,被 final 修饰,字符串对象一旦创建就不能修改。
我们平时写 s = s + "abc",并不是修改原字符串,而是新建了一个字符串对象。
字符串常量池用来复用字符串,减少重复对象。使用 "" 直接赋值会优先去常量池查找;new String() 会在堆上创建新对象。
因为不可变,字符串天生线程安全,适合作为常量、key。但频繁拼接字符串会产生很多临时对象,效率低,这时推荐用 StringBuilder。StringBuilder 可变,非线程安全;StringBuffer 加了 synchronized,线程安全,速度更慢。

posted @ 2026-11-07 23:26  刘秋实  阅读(0)  评论(0)    收藏  举报