總的來說是為了效率和安全
字串專門有個字串池,也只有用final修飾才能實現字串池
常量池的存在 沒有new 關鍵字的string物件產生時就會儲存到字串常量池,當有同樣的內容的string物件產生時,將不再新建物件,節省了堆空間記憶體,注(string的內容無法改變,引用可改變)這樣在大量使用字串的情況下,可以節省記憶體空間,提高效率
string被final修飾後,所以是多執行緒安全的,同乙個字串例項可以被多個執行緒共享,執行緒無法對string內容改變。這就避免了當多個物件同時指向乙個string時,有乙個物件改變了string的內容,其他都改變。
因為字串是不可變的,所以在它建立的時候hashcode就被快取了,不需要重新計算。這就使得字串很適合作為map中的鍵,字串的處理速度要快過其它的鍵物件。這就是hashmap中的鍵往往都使用字串。
String類為什麼是final的
首先我們使用new建立乙個string物件的時候比如 string str new string 123 這句話裡面建立了兩個物件,第乙個在系統中建立了乙個 abc 這個字串 然後在創乙個str物件,然後在讓 123 這個字串的引用 創乙個string物件相當於創了兩個。在說說為啥string類設定...
String類為什麼是final的
1.string的不可變性 比如第一次賦值 abc 第二次賦值 abcd 不是在原記憶體位址修改資料,而是重新指向乙個新位址 新物件 2.string為什麼不可變 開啟jdk原始碼 final修飾的string,代表了string的不可繼承性,final修飾的char代表了被儲存的資料不可更改性。但...
String為什麼是final
1.可以快取 hash 值 因為 string 的 hash 值經常被使用,例如 string 用做 hashmap 的 key。不可變的特性可以使得 hash 值也不可變,因此只需要進行一次計算。2.string pool 的需要 如果乙個 string 物件已經被建立過了,那麼就會從 strin...