Java——String类的方法
Java——String類的方法
String str1 = “abc” 與String str2 = new String(“abc”)有什么區(qū)別?
- 字符串常量存儲(chǔ)在字符串常量池,目的是共享
- 字符串非常量對(duì)象存儲(chǔ)在堆中
String的常用方法
常用方法1:
- int length():返回字符串的長(zhǎng)度return value.length
- char charAt(int index):返回某索引處的字符return value[index]
- boolean isEmpty():判斷是否是空字符串return value.length == 0
- String toLowerCase():使用默認(rèn)語(yǔ)言環(huán)境,將String中的所有字符轉(zhuǎn)換成小寫
- String toUpperCase():使用默認(rèn)語(yǔ)言環(huán)境,將String中的所有字符轉(zhuǎn)換成大寫
- String trim():返回字符串的副本,忽略前導(dǎo)空白和尾部空白(中間的空白不能忽略)
- boolean equals(Object obj):比較字符串的內(nèi)容是否相同
- boolean equalsIgnoreCase(String anotherString):與equals方法類似,忽略大小寫
- String concat(String str):將指定字符串連接到此字符串的結(jié)尾。等價(jià)于“+”
- int compareTo(String anotherString):比較兩個(gè)字符串的大小
- String substring(int beginIndex):返回一個(gè)新的字符串,它是此字符串從deginIndex開(kāi)始到最后一個(gè)字符結(jié)束的一個(gè)子字符串
- String substring(int beginIndex,int endIndex):返回一個(gè)新的字符串,它是此字符串的從begin開(kāi)始,截取到endIndex(不包含)的一個(gè)子字符串
常用方法2:
- boolean endsWith(String suffix):測(cè)試此字符串是否以指定的后綴結(jié)束
- boolean startsWith(String prefix):測(cè)試此字符串是否以指定的前綴結(jié)束
- boolean startsWith(String prefix,int toffset):測(cè)試此字符串從指定索引開(kāi)始的子字符串是否以指定前綴開(kāi)始
- boolean contains(CharSequence s):當(dāng)且僅當(dāng)此字符串包含指定的char值序列時(shí),返回true
- int indexOf(String str):返回指定子字符串在此字符串中第一次出現(xiàn)的索引,從指定的索引開(kāi)始
- int lastIndexOf(String str):返回指定字符串在此字符串中最右邊出現(xiàn)處的索引
常用方法3:
- String replace(char oldChar,char newChar):返回一個(gè)新的字符串,它是通過(guò)用newChar替換此字符串中出現(xiàn)的所有oldChar得到的
-
String replaceAll(String regex,String replacement):使用給定的 replacement 替換此字符串所有匹配給定的正則表達(dá)式的子字符串
-
boolean matches(String regex):告知此字符串是否匹配給定的正則表達(dá)式
-
String[] split(String regex):根據(jù)正則表達(dá)式的匹配拆分此字符串
-
String[] split(String regex,int limit):根據(jù)匹配給定的正則表達(dá)式來(lái)拆分此字符串,最多不超過(guò)limit個(gè),如果超過(guò)了,剩下的全部都放到最后一個(gè)元素中
如果對(duì)字符串進(jìn)行拼接操作,每次拼接,都會(huì)構(gòu)建一個(gè)新的String對(duì)象,既耗時(shí),又浪費(fèi)內(nèi)存空間,而這種操作還不可避免。如何解決這個(gè)問(wèn)題???可以通過(guò)Java提供的StringBuilder類來(lái)解決。
StringBuilder和StringBuffer
StringBuilder是一個(gè)可變的字符串類,可以把它看成一個(gè)容器,這里的可變是指StringBuilder對(duì)象中的內(nèi)容是可變的,可以對(duì)字符串內(nèi)容進(jìn)行增刪,它做字符串拼接的時(shí)候是不會(huì)創(chuàng)建一個(gè)新的對(duì)象的
String的內(nèi)容是不可變的
StringBuilder內(nèi)容是可變的,StringBuffer內(nèi)容是可變的
StringBuffer常用的方法:
- StringBuffer append(xxx):進(jìn)行字符串拼接
- StringBuffer delete(int start,int end):刪除指定位置的內(nèi)容
- StringBuffer replace(int start,int end,String str):把[start,end]位置替換為str
- StringBuffer insert(int offset,xxx):在指定位置插入xxx
- StringBuffer reverse():把當(dāng)前字符序列逆轉(zhuǎn)
String字符串拼接、StringBuffer、StringBuilder三者效率測(cè)試
package string;public class StringDemo06 {public static void stringJoin() {long startTime = System.currentTimeMillis();String s = "";for(int i=0;i<10000;i++) {s = s + "Hello";s = s + "World";s = s + "Hello";}long endTime = System.currentTimeMillis();System.out.println("使用String進(jìn)行字符串拼接用時(shí)(毫秒):"+(endTime - startTime));}public static void stringBufferJoin() {StringBuffer strBuffer = new StringBuffer("");long startTime = System.currentTimeMillis();for(int i=0;i<10000;i++) {strBuffer.append("Hello");strBuffer.append("World");strBuffer.append("Hello");}long endTime = System.currentTimeMillis();System.out.println("使用StringBuffer進(jìn)行字符串拼接用時(shí)(毫秒):"+(endTime - startTime));}public static void stringBuilderJoin() {StringBuilder strBuilder = new StringBuilder();long startTime = System.currentTimeMillis();for(int i=0;i<10000;i++) {strBuilder.append("Hello");strBuilder.append("World");strBuilder.append("Hello");}long endTime = System.currentTimeMillis();System.out.println("使用StringBuilder進(jìn)行字符串拼接用時(shí)(毫秒):"+(endTime - startTime));}public static void main(String[] args) {//String拼接字符串用時(shí)stringJoin();//StringBuffer拼接字符串用時(shí)stringBufferJoin();//StringBuilder拼接字符串用時(shí)stringBuilderJoin();} }運(yùn)行結(jié)果:
總結(jié):StringBuffer與StringBuilder的區(qū)別
總結(jié)
以上是生活随笔為你收集整理的Java——String类的方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Leetcode--113. 路径总和Ⅱ
- 下一篇: Leetcode-437. 路径总和 I