Java中的不可变字符串

在Java中, 字符串对象是不可变的。不可变只是意味着不可更改或不可更改。
创建字符串对象后, 其数据或状态便无法更改, 但会创建一个新的字符串对象。
让我们尝试通过以下示例了解不变性概念:

class Testimmutablestring{ public static void main(String args[]){ String s="Sachin"; s.concat(" Tendulkar"); //concat() method appends the string at the end System.out.println(s); //will print Sachin because strings are immutable objects } }

立即测试
Output:Sachin

现在可以通过下面给出的图表来理解。此处Sachin不变, 但是使用sachintendulkar创建了一个新对象。这就是为什么字符串被称为不可变的原因。
Java中的不可变字符串

文章图片
如你在上图中所看到的, 创建了两个对象, 但是引用变量仍然引用“ Sachin”而不是“ Sachin Tendulkar”。
【Java中的不可变字符串】但是, 如果我们明确地将其分配给引用变量, 它将引用“ Sachin Tendulkar”对象。例如:
class Testimmutablestring1{ public static void main(String args[]){ String s="Sachin"; s=s.concat(" Tendulkar"); System.out.println(s); } }

立即测试
Output:Sachin Tendulkar

在这种情况下, s指向“ Sachin Tendulkar”。请注意, 尚sachin对象未修改。
为什么字符串对象在Java中是不可变的?
由于java使用字符串文字的概念。假设有5个引用变量, 则全部引用一个对象“ sachin”。如果一个引用变量更改了该对象的值, 它将影响所有引用变量。这就是为什么字符串对象在Java中是不可变的。

    推荐阅读