java的字符串为什么不可变

字符串的内存展示

String a = “500asd” ;
String b = “500asd” ;
String c = new String(“500asd” );
String D = new String(“500asd” );

赋值之后a==b,a!=c!=D,b!=c!=D

String c = new String(“500asd” );
String D = new String(“500asd” );这两句赋值里有一个new,这个赋值叫深赋值,深赋值后在堆里开辟了一个新的地址,所以a不等于c和D,他们的地址不一样,但是数值还是相等的。
java的字符串为什么不可变

字符串的实质是数组,数组在内存上是连续存储的,