Java 的 String 为什么是不可变的?

createh52个月前 (04-27)技术教程22

在 Java 中,String 是不可变(Immutable)的,这是为了保证安全性和性能优化。

1 安全性:String 在网络传输、加密等场景下常用,不可变性可以防止数据被篡改。
2 性能优化:JVM 使用字符串常量池,相同的字符串可以被重复引用,避免重复创建对象,节省内存。
3 线程安全:不可变对象天然是线程安全的,无需额外同步机制。

String s1 = "Java";
String s2 = "Java"; // s1 和 s2 指向同一对象
System.out.println(s1 == s2); // true

所以,如果需要修改字符串,建议使用 StringBuilder!

相关文章

在Java中实现字符串的动态替换

比如消息通知,短信发送之类的我们肯定是要用到字符串模版的替换的要在Java中实现字符串的动态替换,可以使用String.format方法或者MessageFormat类或者三方包。以下是使用这三种方法...

正则表达式学习之替换分组练习

切割案例小练习:字符串77 23 91 99 31 排序输出23 31 77 91 99分析:1、 字符切割数组2、 字符数组转换成数字数组3、 排序4、 遍历拼接字符串代码结果替换案例小练习字符串:...

漫画:腾讯面试题,请实现把字符串中的空格替换为“%20”

面试现场题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。import java.u...

Java面试高频题:String与StringBuilder—一场字符串操作的较量

Java面试高频题:String与StringBuilder——一场字符串操作的较量在Java的世界里,字符串(String)无疑是最耀眼的明星之一。然而,在它的背后,还有另一个默默奉献的英雄——St...

Java中字符串填充零和去零的常用方法

背景涉及到一些标识如订单ID,商品ID等时,由于历史原因,需要扩展或者缩进。这就需要对字符串填充的前面或者后面填充一些字符,本文以零为例,介绍一些简单的通用方法。字符串填充零实例1.使用工具类org....

PHP替换字符串关键词长词优先函数

如何实现php str_replace替换关键词,如何控制长词优先,也不难,我就写了个这样的函数。function myreplace($string, $replaces){ uksort($rep...