我有以下代码,我编写这些代码来检查字符串是如何不可变的。
我的代码是:
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
是不可变的?
答案 0 :(得分:1)
String
是不可变的。
a1.concat("America");
返回您忽略的新String
实例。 a1
未更改。
a1=a1+a2;
创建一个新的String
实例并将其分配给a1
变量。 String
引用的原始a1
未更改。
这类似于写作:
a1 = a1.concat("America");