因为String 类型的数据是存储于内存的常量区的,是不可变的。
也许有人会质疑了
String str="hello";
str="world";
System.out.println(str);
这段代码完全可以输出world。其实此str已非彼str,"hello"分配在常量区,但str只是它的一个引用。第二个"world" 也分配在常量区,只是将str指向了它而已。此时的“hello” 依然停留在常量区,等待着JVM来GC,如果在GC之前,有恶意用户闯入,将"hello"读了出去,那将是非常不安全的。
所以,String 的安全性是没有保障的。
char[]是不一样的,在使用完了cstr之后,可以将其进行修改。
char[] cstr={'h','e','l','l','o'};
cstr[2]='s';
System.out.println(cstr);
但查询String 的API发现,根本没有更改某个字符的方法。