欢迎光临散文网 会员登陆 & 注册

Java的String是不可变的吗?

2023-02-17 16:56 作者:编程改变Word  | 我要投稿

在 Java 中,String 类型是不可变的,也就是说,一旦创建了一个 String 对象,它的值就不能被修改。例如:

String str = "hello";

str = str + " world"; // 创建了一个新的字符串对象


在上面的示例中,第二行代码实际上创建了一个新的字符串对象,而不是修改了原始的 str 对象。

然而,有一些方法可以修改字符串的值,例如:

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

  • substring(int beginIndex, int endIndex):返回一个新的字符串,它是该字符串的一个子字符串。

  • replace(char oldChar, char newChar):返回一个新的字符串,它是将该字符串中所有出现的 oldChar 替换为 newChar 后得到的字符串。

这些方法并不会直接修改原始的字符串对象,而是返回一个新的字符串对象。

此外,还有一些比较隐晦的方式可以修改字符串对象的值,例如使用反射机制来修改字符串对象的私有字段,或者使用 sun.misc.Unsafe 类等不安全的操作。

因此,虽然 String 类型本身是不可变的,但是在某些情况下,字符串的值可能会被修改,因此在编写 Java 代码时,仍需要注意字符串的不可变性。



Java的String是不可变的吗?的评论 (共 条)

分享到微博请遵守国家法律