个性化阅读
专注于IT技术分析

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创建了一个新对象。这就是为什么字符串被称为不可变的原因。

堆图

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

但是, 如果我们明确地将其分配给引用变量, 它将引用“ 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中是不可变的。
赞(0)
未经允许不得转载:srcmini » Java中的不可变字符串

评论 抢沙发

评论前必须登录!