什么TM的叫String不可变序列???
1、String是一个final类,代表不可变序列
2、我在想什么叫不可变
比如下列程序
看到输出不同结果我单纯的想这不是变了吗,那么String不可变指的是什么?
直到了解到下列内容
String一经初始化后,就不会再改变其内容了。
对String字符串的操作实际上是对其副本(原始拷贝)的操作,
原来的字符串一点都没有改变。比如:
String s ="a"; 创建了一个字符串
s = s+"b"; 实际上原来的"a"字符串对象已经丢弃了,现在又产生了另一个字符串s+"b"(也就是"ab")。
如果多次执行这些改变串内容的操作,会导致大量副本字符串对象存留在内存中,降低效率。
如果这样的操作放到循环中,会极大影响程序的时间和空间性能,甚至会造成服务器的崩溃。
我想如何用程序来证明这个呢?即原先创建的对象已经丢弃了,
于是如上的程序我将 s改为 147 在新创建一个String对象为ll值也为 147,如果s原先的对象没有丢弃,那么根据java语法
s==ll 返回值为false,如果返回值为true那么就证明原先的String对象已经丢弃了。如上。。。