Java中String字符串的使用詳解與常用方法介紹
String的簡單介紹在Java中,經(jīng)常會使用String來存儲數(shù)據(jù)并對其進行操作。類代表不可變的字符序列,即字符串常量。實際上,“abc”、”ddd”等字符串都是String類的對象。我們通常有兩
String的簡單介紹
在Java中,經(jīng)常會使用String來存儲數(shù)據(jù)并對其進行操作。類代表不可變的字符序列,即字符串常量。實際上,“abc”、”ddd”等字符串都是String類的對象。我們通常有兩種創(chuàng)建String對象的方式:一種是使用`new String("abc")`,另一種是直接賦值`String s2 “abc”;`。需要注意的是,對String引用變量重新賦值時會產(chǎn)生新的String對象。例如,當執(zhí)行`"abc" 2 2`和`2 2 ”abc”`時,結(jié)果分別是`abc22`和`4abc`。
掌握使用“ ”號進行字符串連接非常重要。對于引用數(shù)據(jù)類型,``比較的是地址,如果要比較兩個字符串的內(nèi)容是否相同,應該使用`equals()`方法。
String類的常用方法
- `charAt(int index)`: 返回字符串中第index個字符。
- `length()`: 返回字符串的長度。
- `indexOf(String str)`: 返回字符串中第一次出現(xiàn)str的位置。
- `indexOf(String str, int fromIndex)`: 返回字符串中從fromIndex開始第一次出現(xiàn)str的位置。
- `equals(String another)`: 比較字符串與another是否相等(區(qū)分大小寫)。
- `equalsIgnoreCase(String another)`: 比較字符串與another是否相等(忽略大小寫)。
- `replace(char oldChar, char newChar)`: 在字符串中用newChar替換oldChar。
- `startsWith(String prefix)`: 判斷字符串是否以prefix開頭。
- `endsWith(String suffix)`: 判斷字符串是否以suffix結(jié)尾。
- `toUpperCase()`: 返回字符串的大寫形式。
- `toLowerCase()`: 返回字符串的小寫形式。
- `substring(int beginIndex)`: 返回從beginIndex開始到結(jié)尾的子字符串。
- `substring(int beginIndex, int endIndex)`: 返回從beginIndex到endIndex的子字符串。
- `trim()`: 返回去除開頭和結(jié)尾空格后的字符串。
- `split(String regex)`: 將字符串按指定分隔符拆分為字符串數(shù)組。
- `valueOf(...)`: 將基本類型數(shù)據(jù)轉(zhuǎn)換為字符串。
關于String常量池
為了高效利用內(nèi)存,Java提供了String常量池。隨著應用程序規(guī)模增長,String字面值所占內(nèi)存也逐漸增多,存在大量冗余。JVM在內(nèi)存中劃分了String常量池,用于存儲所有字面值對象,避免重復創(chuàng)建相同的字符串對象。在之前學過的String創(chuàng)建方式中,使用`new String("abc")`會在堆中創(chuàng)建一個String對象,并在常量池中創(chuàng)建一個字面值對象;而直接賦值`String s2 “abc”;`只會在常量池中創(chuàng)建一個字面值對象。這樣的設計有效減少了內(nèi)存浪費,提高了Java程序的運行效率。