String類為什麼是final的

2021-09-08 18:52:20 字數 443 閱讀 3491

首先我們使用new建立乙個string物件的時候比如:

string str=new string("123");

這句話裡面建立了兩個物件,第乙個在系統中建立了乙個"abc"這個字串;

然後在創乙個str物件,然後在讓"123"這個字串的引用;

創乙個string物件相當於創了兩個。

在說說為啥string類設定為final型別。

fianl型別,是一種不能被修改的型別。

試想,如果我對

str=str.touppercase();

為啥這個需要返回返回而不是直接改?

首先如果直接改或許會操作到系統建立的abc這個字串,當再new乙個'abc'物件的時候,系統將不再建立abc物件,而是直接將新建立的物件指向'abc'字串

如果不設定為final型別會導致直接作業系統字串,導致系統字串出現問題。。

String類為什麼是final的

1.string的不可變性 比如第一次賦值 abc 第二次賦值 abcd 不是在原記憶體位址修改資料,而是重新指向乙個新位址 新物件 2.string為什麼不可變 開啟jdk原始碼 final修飾的string,代表了string的不可繼承性,final修飾的char代表了被儲存的資料不可更改性。但...

String類為什麼是final修飾的

總的來說是為了效率和安全 字串專門有個字串池,也只有用final修飾才能實現字串池 常量池的存在 沒有new 關鍵字的string物件產生時就會儲存到字串常量池,當有同樣的內容的string物件產生時,將不再新建物件,節省了堆空間記憶體,注 string的內容無法改變,引用可改變 這樣在大量使用字串...

String為什麼是final

1.可以快取 hash 值 因為 string 的 hash 值經常被使用,例如 string 用做 hashmap 的 key。不可變的特性可以使得 hash 值也不可變,因此只需要進行一次計算。2.string pool 的需要 如果乙個 string 物件已經被建立過了,那麼就會從 strin...