首先我們使用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...