字符串在java中是如何不可变的

时间:2016-12-27 06:59:40

标签: java string

我有以下代码,我编写这些代码来检查字符串是如何不可变的。

我的代码是:

class Check
{
   public static void main(String k[])
   {
      String a1="JohnPlayer";
      a1.concat("America");//line no 6
      String a2="America";//line no 7
      a1=a1+a2;//line no 8
      System.out.println("Value of a1="+a1);
   }
}

在第6行中,当我使用concat时,它只打印" JohnPlayer",      如果我使用a1+a2连接a1和a2,它会打印连接值" JohnPlayerAmerica" 。在这种情况下,我怎么能说String是不可变的?

1 个答案:

答案 0 :(得分:1)

String是不可变的。

a1.concat("America");

返回您忽略的新String实例。 a1未更改。

a1=a1+a2;

创建一个新的String实例并将其分配给a1变量。 String引用的原始a1未更改。

这类似于写作:

a1 = a1.concat("America");