java String類常用方法練習(xí)小結(jié)
String 類代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作為此類的實(shí)例實(shí)現(xiàn)。
字符串是常量;它們的值在創(chuàng)建之后不能更改。字符串緩沖區(qū)支持可變的字符串。
String 類包括的方法可用于檢查序列的單個(gè)字符、比較字符串、搜索字符串、提取子字符串、
創(chuàng)建字符串副本并將所有字符全部轉(zhuǎn)換為大寫或小寫。
String類是最常用的類之一,下面就通過幾個(gè)練習(xí),熟悉String類中的提供的重要方法。
字符串練習(xí)一
給定一個(gè)字符串?dāng)?shù)組,按照字典順序,進(jìn)行大小寫排序
思路:
1.對(duì)數(shù)組排序,可以用選擇排序、冒泡排序等等。
2.for循環(huán)嵌套,比較,交換位置。
3.不同之處,以前比較的是數(shù)字,用的是比較運(yùn)算符;
現(xiàn)在比較的是字符串對(duì)象,應(yīng)該使用compareTo方法。
public class StringTest_1
{
//對(duì)字符串?dāng)?shù)組進(jìn)行排序
public static void stringSort(String[] arr)
{
//采用冒泡排序
for(int i=0;i<arr.length-1;i++)
{
for(int j=0;j<arr.length-1-i;j++)
{
//用compareTo方法進(jìn)行字符串比較
if(arr[j].compareTo(arr[j+1])>0)
{
String temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
showArray(arr);
}
//定義方法,以[str1,str2,str3]的格式來打印數(shù)組
public static void showArray(String[] arr)
{
System.out.print("[");
for(int i=0;i<arr.length;i++)
{
if(i!=arr.length-1)
System.out.print(arr[i]+",");
else
{
System.out.print(arr[i]+"]\n");
}
}
}
public static void main(String[] args)
{
String arr[]={"nba","abc","cba","zz","qq","haha"};
//打印數(shù)組
showArray(arr);
//對(duì)數(shù)組進(jìn)行排序并輸出
stringSort(arr);
}
}
運(yùn)行:

字符串練習(xí)二
一個(gè)子串在字符串中出現(xiàn)的次數(shù)
思路:
1.用indexOf方法獲取子串在字符串中第一次出現(xiàn)的位置index
2.再用indexOf方法獲取以(index+子串長(zhǎng)度)為起始的剩下的字符串中子串出現(xiàn)的位置,直到字符串中不再包含子串??捎脀hile循環(huán)實(shí)現(xiàn)。
3.每次找到后用計(jì)數(shù)器記錄即可。
public class StringTest_2
{
public static void main(String[] args)
{
String str="abcqwabcedcxabcuabcjkabcnmbabc";
//String str=null;
try
{
int count=countChildStr(str,"abc");
System.out.println("abc在"+str+"中出現(xiàn)的次數(shù)為:"+count);
}
catch (NullPointerException ne)
{
System.out.println(ne);
}
catch(RuntimeException re)
{
System.out.println(re);
}
}
public static int countChildStr(String str,String key)
{
if(str==null||key==null)
{
throw new NullPointerException("空指針異常,源字符串和子串都不能為NULL");
}
if(key=="")
{throw new RuntimeException("調(diào)用不合法,子串要有內(nèi)容");}
int count=0,index=0;
while((index=str.indexOf(key,index))!=-1)
{
count++;
index+=key.length();
}
return count;
}
}

字符串練習(xí)三
找到兩個(gè)字符串的最大公共子串
思路:
1.判斷較長(zhǎng)字符串中是否包含較短字符串,如果包含,則較短字符串則為最大公共子串。
2.如果不包含,就對(duì)較短字符串以長(zhǎng)度遞減的方式取子串,去較長(zhǎng)字符串中判斷是否包含,如果包含就找到了,不用再找了。
3.重點(diǎn):對(duì)字符串以長(zhǎng)度遞減的方式取子串
public class StringTest_3
{
public static void main(String[] args)
{
//創(chuàng)建兩個(gè)不為空的字符串
String str1="abxczwsxcvdfas";
//String str1=null;
String str2="ghwsxcvxcdbgthnnnrfqwe";
try
{
String str=searchMaxCommonStr(str1,str2);
System.out.println("最大公共子串是:"+str);
}
catch (NullPointerException ne)
{
System.out.println(ne);
}
}
public static String searchMaxCommonStr(String str1,String str2)
{
if(str1==null||str2==null)
throw new NullPointerException("空指針異常,參數(shù)不能為Null");
//斷定較長(zhǎng)字符串和較短字符串
String max=(str1.length()>str2.length())?str1:str2;
String min=(str1.equals(max))?str2:str1;
//按長(zhǎng)度遞減的方式取子串,從min.length~~1
for(int i=min.length();i>0;i--)
{
for(int x=0,y=x+i;y<min.length();x++,y++)
{
String childStr=min.substring(x,y);
//若較長(zhǎng)字符串中包含此子串,則找到了
//否則繼續(xù)找
if(max.contains(childStr))
return childStr;
}
}
return null;
}
}
運(yùn)行:

字符串練習(xí)四
寫一個(gè)和trim功能相同的方法
思路:
1.定義兩個(gè)變量,用來存儲(chǔ)兩個(gè)角標(biāo)
2.分別從頭和尾遍歷字符串,直到找到第一個(gè)不為空格的字符
3.截取字符串
public class StringTest_4
{
public static void main(String[] args)
{
String str=" abc ws ";
str=myTrim(str);
System.out.println(str);
}
public static String myTrim(String s)
{
int begin=0,end=s.length()-1;
//從頭遍歷
while(begin<=end && s.charAt(begin)==' ')
{
begin++;
}
//從尾部遍歷
while(begin<=end && s.charAt(end)==' ')
{
end--;
}
return s.substring(begin,end+1);
}
}
運(yùn)行:

以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
SpringBoot通過Filter實(shí)現(xiàn)整個(gè)項(xiàng)目接口的SQL注入攔截詳解
這篇文章主要介紹了SpringBoot通過Filter實(shí)現(xiàn)整個(gè)項(xiàng)目接口的SQL注入攔截詳解,SQL注入是比較常見的網(wǎng)絡(luò)攻擊方式之一,在客戶端在向服務(wù)器發(fā)送請(qǐng)求的時(shí)候,sql命令通過表單提交或者url字符串拼接傳遞到后臺(tái)持久層,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令,需要的朋友可以參考下2023-12-12
Java結(jié)合EasyExcel構(gòu)建復(fù)雜多級(jí)表頭
在Java開發(fā)中,處理Excel文件時(shí),構(gòu)建復(fù)雜的多級(jí)表頭是一項(xiàng)常見且具有挑戰(zhàn)性的任務(wù),下面小編就來和大家聊聊如何通過自定義方法實(shí)現(xiàn)多級(jí)表頭的構(gòu)建吧2025-03-03
springSecurity實(shí)現(xiàn)簡(jiǎn)單的登錄功能
這篇文章主要為大家詳細(xì)介紹了springSecurity實(shí)現(xiàn)簡(jiǎn)單的登錄功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09
SpringBoot詳解如何進(jìn)行整合Druid數(shù)據(jù)源
Druid是阿里開發(fā)的一款開源的數(shù)據(jù)源,被很多人認(rèn)為是Java語言中最好的數(shù)據(jù)庫(kù)連接池,本文主要介紹了SpringBoot整合Druid數(shù)據(jù)源的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
java實(shí)現(xiàn)十六進(jìn)制字符unicode與中英文轉(zhuǎn)換示例
當(dāng)需要對(duì)一個(gè)unicode十六進(jìn)制字符串進(jìn)行編碼時(shí),首先做的應(yīng)該是確認(rèn)字符集編碼格式,在無法快速獲知的情況下,通過一下的str4all方法可以達(dá)到這一目的2014-02-02
關(guān)于后綴表達(dá)式的java實(shí)現(xiàn)過程
這篇文章主要介紹了關(guān)于后綴表達(dá)式的java實(shí)現(xiàn)過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07

