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對象已經丟棄了。如上。。。