📜  Java中的不可变字符串

📅  最后修改于: 2020-09-24 01:31:23             🧑  作者: Mango

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  
 }  
}  

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

如您在上图中所看到的,创建了两个对象,但是引用变量仍然引用“Sachin”而不是“SachinTendulkar”。

但是,如果我们明确地将其分配给引用变量,它将引用“SachinTendulkar”对象。例如:

class Testimmutablestring1{  
 public static void main(String args[]){  
   String s="Sachin";  
   s=s.concat(" Tendulkar");  
   System.out.println(s);  
 }  
}  

在这种情况下,s指向“SachinTendulkar”。请注意,尚sachin对象未修改。

为什么字符串对象在Java中是不可变的?

因为java使用字符串文字的概念。假设有5个引用变量,所有引用一个对象“ sachin”。如果一个引用变量更改了该对象的值,它将影响所有引用变量。这就是为什么字符串对象在Java中是不可变的。