Java字串
阿新 • • 發佈:2020-07-26
字串的不可變性
- 一旦一個string物件在記憶體(堆)中被創建出來,他就無法被修改。
- String類的所有方法都沒有改變字串本身的值,都是返回了一個新的物件。
- 如果需要一個可修改的字串,應該使用StringBuffer 或者 StringBuilder。否則會有大量時間浪費在垃圾回收上,因為每次試圖修改都有新的string物件被創建出來。
substring方法
substring(int beginIndex, int endIndex)方法擷取字串並返回其[beginIndex,endIndex-1]範圍內的內容。
字串替換相關方法
- replace(CharSequence target, CharSequence replacement) ,用replacement替換所有的target,兩個引數都是字串。
- replaceAll(String regex, String replacement) ,用replacement替換所有的regex匹配項,regex是個正則表示式,replacement是字串。
- replaceFirst(String regex, String replacement) ,基本和replaceAll相同,區別是隻替換第一個匹配項。
字串拼接
- 使用
+
拼接字串 - String物件的concat方法
- 可以擴充和修改的StringBuffer,使用append方法進行字串拼接
- StringBuilder的append方法(StringBuilder和StringBuffer類似,StringBuffer是執行緒安全的)
switch對字串的支援
- switch對int的判斷是直接比較整數的值
- switch對char型別進行比較的時候,實際上比較的是ascii碼
- switch對字串進行比較的實際是雜湊值,然後通過使用equals方法比較進行安全檢查
- 其實switch只支援一種資料型別,那就是整型,其他資料型別都是轉換成整型之後在使用switch的
Java字串池
在JVM中,為了減少相同的字串的重複建立,為了達到節省記憶體的目的。會單獨開闢一塊記憶體,用於儲存字串常量,這個記憶體區域被叫做字串常量池。
當代碼中出現雙引號形式(字面量)建立字串物件時,JVM 會先對這個字串進行檢查,如果字串常量池中存在相同內容的字串物件的引用,則將這個引用返回;否則,建立新的字串物件,然後將這個引用放入字串常量池,並返回該引用。
字串長度限制
字串有長度限制,在編譯期,要求字串常量池中的常量不能超過65535,並且在javac執行過程中控制了最大值為65534。
在執行期,長度不能超過Int的範圍,否則會拋異常。