本文介紹了Java中用來描述操作字符串的String類,和其一些常用的基本操作方法,字符串的創(chuàng)建輸出,字符串對象的比較,字符串查找,字符串的轉(zhuǎn)化,字符串的替換,字符串拆分,字符串截取,和大小寫轉(zhuǎn)換,去除左右空格,子字符串包含,學(xué)會使用這些方法,能更方便的使用操作字符串~
一.初識String類
前言:String也就是字符串的意思,所謂字符串就是0到多個(gè)字符構(gòu)成的整體,而字符串在日常開發(fā)中應(yīng)用場景很多,我們輸入的一連串文字也可以看成是字符串, 而在Java庫中提供了String類即字符串類供我們用其描述字符串…
1.什么是String類?
String類也就是字符串類 是Java庫中提供的供程序員操作字符串的一個(gè)類,
而在C語言中也存在字符串,它可以用字符指針或者字符數(shù)組等進(jìn)行指向或者存儲字符串來對其進(jìn)行操作
但是在C語言這類面向過程的語言當(dāng)中,只是單一的存放字符串,故還有一些專門對字符串進(jìn)行的相關(guān)操作(如:計(jì)算字符串長度, 字符串比較等)需要獨(dú)立封裝方法出來,
故在C語言提供了標(biāo)準(zhǔn)的函數(shù)庫需要預(yù)編譯指令#include<string.h>包含頭文件后,可以調(diào)用其提供的對字符串進(jìn)行操作的函數(shù)完成大部分字符串操作(如:strlen 計(jì)算字符串長度 strcmp比較兩個(gè)字符串的大小等…)
但是,這種對數(shù)據(jù)和操作數(shù)據(jù)的方法分離開的方式并不符合面向?qū)ο蟮乃枷?而字符串又應(yīng)用非常廣泛,
在Java純面向?qū)ο蟮恼Z言中對字符串的使用也隨處可見,故java中對字符串的存儲和操作提供了String類…
String類即封裝了字符串和對字符串的操作方法,并且有一些相應(yīng)的權(quán)限限制,從使用角度來看,String類更契合字符串的特性,對字符串操作更方便也易于拓展…
2.String類的常用基本操作方法
String類內(nèi)部設(shè)計(jì)很巧妙,而對于String類的學(xué)習(xí),先用起來再分析其內(nèi)部的構(gòu)造對于初學(xué)者會事半功倍~
為了更容易理解String的方法
以下是博主用一些常用的字符串操作方法的代碼和運(yùn)行結(jié)果~
先用起來,再使用不同方法時(shí) 注意其每個(gè)方法的相同之處~
①.字符串的創(chuàng)建和輸出
所謂創(chuàng)建和輸出即是字符串對象的構(gòu)造方法,和輸出字符串的內(nèi)容
以下是String的一些構(gòu)造方法,了解常用的即可
String類的構(gòu)造方法有很多,大多都是根據(jù)傳過來的參數(shù)內(nèi)容構(gòu)建相應(yīng)的字符串
還有一些傳遞的數(shù)組設(shè)置了范圍(左閉右開區(qū)間),根據(jù)其范圍內(nèi)的數(shù)據(jù)進(jìn)行構(gòu)建字符串,
注意:還有一些參數(shù)是int[] byte[]類型時(shí) 構(gòu)建的字符串內(nèi)容是對應(yīng)著int[] 每個(gè)元素的Ascll碼字符
常用的構(gòu)造方法:
String str="hello";// 直接賦值 字符串常量
String str1=new String("hello");//實(shí)例化對象 其傳字符串傳字符串常量
char[] ch={'h','e','l','l','o'};
String str2=new String(ch); // 實(shí)例化字符串對象 傳字符數(shù)組引用
// 以上都會創(chuàng)建字符串對象 內(nèi)容為 hello
字符串的輸出:
輸出字符串的內(nèi)容直接使用內(nèi)置的println輸出方法即可~
public static void main(String[] args) {
String str="hello";// 直接賦值 字符串常量
String str1=new String("hello");//實(shí)例化對象 其傳字符串傳字符串常量
char[] ch={'h','e','l','l','o'};
String str2=new String(ch); // 實(shí)例化字符串對象 傳字符數(shù)組引用
System.out.println(str);
System.out.println(str1);
System.out.println(str2);
}
在上篇博客中 能夠知道,通過println輸出對象內(nèi)容實(shí)際上是重寫了Object的toString方法,而輸出字符串對象內(nèi)容是否是字符串類里重寫的toString 得到的字符串的內(nèi)容呢?
不是,在String類里重寫的toString方法,但是其內(nèi)部實(shí)現(xiàn)并不是返回字符串內(nèi)容的字符串形式,而是直接返回當(dāng)前字符串對象引用
因?yàn)榉椒ㄖ剌d,println輸出字符串對象會調(diào)用對應(yīng)的println方法,根據(jù)相應(yīng)的方法而輸出字符串對象內(nèi)的字符串內(nèi)容,
而并不是String對象內(nèi)重寫的toString得到的字符串對象內(nèi)容
具體輸出內(nèi)容是在println內(nèi)部調(diào)用的方法中(暫不深究)
故輸出字符串內(nèi)容 直接使用println方法傳遞對象即可
②.String對象的比較
對于對象的比較分為 比較對象是否相等 和比較對象的大小
1.比較String對象是否相等
比較對象是否相等 可以使用== 和equals 方法以及equalsIgnoreCase 方法
public static void main(String[] args) { //比較兩個(gè)字符串是否相等
String str1="hello";
String str2="hello";
System.out.println(str1==str2); //?
//str1 和 str2 指向的都是存放 同一個(gè)字符串對象地址 比較的是地址
String str3=new String("hello");
String str4=new String("hello");
// str3和str4 都是new了一個(gè)新的字符串對象 兩個(gè)字符串對象地址不同!
System.out.println(str3==str4);//?
//比較兩個(gè)字符串是否相等不能用==號其比較的是地址 得用內(nèi)部的equals方法
System.out.println(str3.equals(str4)); //String 里的equals 實(shí)際上也是重寫了 object的equals方法
System.out.println("HELLO".equalsIgnoreCase("hello"));// 忽略大小寫比較是否相等
}
注意: == 比較的是對象的地址 (沒有意義) , 至于為什么不同的兩種寫法會有不同的邏輯值 其涉及到后面的字符串常量池~
equals在字符串類里重寫了Object的方法能夠按照字符串內(nèi)容比較兩個(gè)字符串是否相等
equalsIgnoreCase方法是忽略一些情況進(jìn)行比較即是忽略字符串大小寫進(jìn)行比較( Hello 和hello 比較會 看作相等)
比較字符串是否相等用==不會報(bào)錯(cuò) 但沒有意義
比較字符串是否相等用equals方法 要忽略大小寫比較則equalsIgnoreCase方法
2.比較字符串對象的大小
比較字符串對象的大小是按字符串每個(gè)字典序大小進(jìn)行判斷
public static void main(String[] args) {//比較兩個(gè)字符串的大小
String str1="hello";
String str2="hellO";
//System.out.println(str1>str2); 不能用 > <
System.out.println(str1.compareTo(str2));
//實(shí)現(xiàn)了 comparable接口重寫了compareTo方法 按字典序比較字符串對象內(nèi)字符數(shù)組引用指向的字符數(shù)組內(nèi)每個(gè)字符大小
// 從下標(biāo)0開始的字符比較 當(dāng)出現(xiàn)不同 str1 大于str2返回大于零的數(shù) 反之小于零的數(shù) 如果所有都相等則返回零
System.out.println(str1.compareToIgnoreCase(str2)); //兩個(gè)字符串對象比較大小 忽視大小寫 漢字對應(yīng)的是其他Ascll碼值
}
比較字符串大小不能用> < 比較 其只能作用于基本數(shù)據(jù)類型
compareTo方法比較字符串大小
字符串大小的比較需要調(diào)用compareTo方法,而此方法是String類實(shí)現(xiàn)了Comparable接口具備比較特性后重寫的方法,方法體即是按照字符串字典序進(jìn)行比較
當(dāng)對應(yīng)字符不相等時(shí) c1比c2大 則字符串1比字符串2大 當(dāng)字符相等長度不相等時(shí),長度越長的字符串大 ,而完全相等則返回0(即兩個(gè)字符串相等)
compareToIgnoreCase忽略大小寫情況比較字符串大小
其作用是當(dāng)兩個(gè)字符串的每個(gè)字符 只是大小寫不相等時(shí), 會看成是同一個(gè)字符進(jìn)行比較
字符串比較大小不能用> <
比較大小使用實(shí)現(xiàn)Comparable接口重寫的compareTo方法
要忽略大小寫情況比較 使用compareToIgnoreCase方法
③.字符串查找
字符串查找的一些方法在String類中經(jīng)常被用到
比如:查找字符串中某個(gè)字符或者字符串所在的下標(biāo)位置,查找指定字符在字符串中第一次出現(xiàn)或者最后一次出現(xiàn)的下標(biāo)
↓
public static void main(String[] args) {//字符串內(nèi) 尋找字符內(nèi) 字符 字符串 的方法
String str1="hello";
System.out.println(str1.charAt(4)); //獲取字符串里指向字符數(shù)組下標(biāo)為4位置的字符
System.out.println(str1.indexOf('l')); //返回字符串內(nèi) 第一個(gè)出現(xiàn)'l' 字符的下標(biāo)位置不存在則返回-1
System.out.println(str1.indexOf('l',2)); //重載 從指定下標(biāo)位置開始往后找第一個(gè)出現(xiàn)字符'l'的下標(biāo)位置
System.out.println(str1.indexOf("llo"));//(找子字符串)從起始位置返開始回字符串中第一次出現(xiàn)字符串"llo"其第一個(gè)字符的下標(biāo)位置
System.out.println(str1.indexOf("llo",3));//從3下標(biāo)位置往后找子字符串 找不到返回-1
System.out.println(str1.lastIndexOf('l'));//從后往前找第一個(gè)出現(xiàn)'l'的下標(biāo)位置
System.out.println(str1.lastIndexOf('l',2));//從2下標(biāo)位置開始往前找
System.out.println(str1.lastIndexOf("llo"));//從后往前找子字符串 注意字符串順序不會顛倒 hello 從后找llo 字母順序還是從左往右返回的也是字符串首字符地址
System.out.println(str1.lastIndexOf("llo",2));//從指定下標(biāo)從后往前找
}
④.字符串的轉(zhuǎn)化
String類中提供了將其他數(shù)據(jù)類型的數(shù)據(jù)轉(zhuǎn)換為String類型的數(shù)據(jù),也提供了將String轉(zhuǎn)換為數(shù)組等方法
其他數(shù)據(jù)類型轉(zhuǎn)換為String類型
public static void main(String[] args) { //將 其他類型轉(zhuǎn)換為字符串
String str ;
str=String.valueOf(123); // String字符串內(nèi)有valueOf靜態(tài)方法 直接用類名調(diào)用 將所有基本數(shù)據(jù)類型數(shù)據(jù)(short byte除外) 轉(zhuǎn)換為字符串
System.out.println(str);
str=String.valueOf(3.14);
System.out.println(str);
char [] arr={'h','e','l','l','o'};
str=String.valueOf(arr); //等價(jià)于 實(shí)例化一個(gè)字符串對象將字符數(shù)組調(diào)用其構(gòu)造方法 只能用于字符數(shù)組 整形數(shù)組不行
System.out.println(str);
str=String.copyValueOf(arr); //和上面等價(jià) 實(shí)現(xiàn)的都是 拷貝一份字符數(shù)組 實(shí)例化一個(gè)字符串對象 將其內(nèi)部字符數(shù)組引用變量指向拷貝的字符數(shù)組
System.out.println(str);
str=String.valueOf(arr,2,3);//支持重載 從指定下標(biāo)位置往后拷貝 3個(gè)字符 作為新數(shù)組給新字符串
System.out.println(str);
str=String.valueOf(new Note()); // 傳遞 對象地址 實(shí)際會調(diào)用對象內(nèi)的toString方法得到對象內(nèi)容的字符串形式返回用于printf
System.out.println(str);
}
注意:
1.字符串轉(zhuǎn)化的方法String.valueOf是靜態(tài)方法不需要示例對象,但是轉(zhuǎn)換后會創(chuàng)建String對象
2. 除了short byte以外的基本數(shù)據(jù)類型數(shù)據(jù) 都可以通過String.valueOf方法轉(zhuǎn)換為對應(yīng)的字符串
3. String.valueOf可以傳字符數(shù)組引用 根據(jù)其字符數(shù)組內(nèi)容創(chuàng)建字符串但不能是整形數(shù)組
4.轉(zhuǎn)化為字符串的數(shù)據(jù)是自定義類的實(shí)例,則會將其內(nèi)容轉(zhuǎn)化為字符串形式即會調(diào)用其toString方法,而如果沒有重寫則會調(diào)用Object類的toString方法
…
===============================================================
String類型的一些特殊轉(zhuǎn)換
toCharArray方法 將當(dāng)前字符串 轉(zhuǎn)換為字符數(shù)組形式返回
String.format將數(shù)據(jù)格式化轉(zhuǎn)換為字符串返回(類似于C語言的格式化輸出)
public static void main(String[] args) { // 轉(zhuǎn)換字符串方法
String str="hello";
char []arr=str.toCharArray(); // 將字符串 轉(zhuǎn)換為一個(gè)字符數(shù)組 返回 即將字符串內(nèi)的字符數(shù)組拷貝一份字符數(shù)組返回其地址
System.out.println(arr);
String str1=new String(arr); //將數(shù)組轉(zhuǎn)換為字符串 即創(chuàng)建一個(gè)字符串對象 調(diào)用其構(gòu)造方法傳數(shù)組引用 此字符串內(nèi)的數(shù)組是拷貝的新的
String str2=String.format("%d-%3d-%.2f",2023,2,7.666); //格式化轉(zhuǎn)換為字符串按照數(shù)據(jù)的類型 按相對應(yīng)的格式輸出字符串 將其轉(zhuǎn)換為字符串
System.out.println(str2);
}
注意:
toCharArray方法是成員方法,根據(jù)當(dāng)前字符串對象的字符串內(nèi)容轉(zhuǎn)換為對應(yīng)的字符數(shù)組(會拷貝新數(shù)組返回)
println輸出方法 如果傳參是字符數(shù)組則可以直接輸出字符數(shù)組的所有字符(是整形等則會輸出其全路徑)
格式化轉(zhuǎn)換語句是在""內(nèi)的 對應(yīng)的%d 是整形格式化 %3d則是寬度為3 不足左邊補(bǔ)空格 %f是浮點(diǎn)型格式化 %.2f是四舍五入保留兩位小數(shù)(對應(yīng)的格式化和C語言類似).
對應(yīng)的轉(zhuǎn)換的基本類型數(shù)據(jù)在后面 逗號隔開, 每個(gè)格式化類型需要對應(yīng)基本數(shù)據(jù)類型格式(不能%d 轉(zhuǎn)換浮點(diǎn)型數(shù)據(jù))
⑤.字符串的替換
即將字符串內(nèi)的指定字符或字符串內(nèi)容替換為其他字符或者字符串
public static void main(String[] args) {// 替換字符串里的內(nèi)容的方法 字符或者字符串 注意:字符串都是不可變的 實(shí)際上是產(chǎn)生新的一份字符串
String str="aaaaaa";
str=str.replace('a','6'); //將字符串內(nèi)的所有a字符替換為6字符 可以作用于字符或者字符串
System.out.println(str);
str="ababc";
str=str.replace("ab","666");//將字符串內(nèi) 所有子字符串"aa"替換為 "666"
//CharSequence 是一個(gè)String實(shí)現(xiàn)的一個(gè)接口 這里就可以用向上轉(zhuǎn)型接受
System.out.println(str);
//下面兩個(gè)只能作用于字符串
str=str.replaceAll("666","c");//和上面等價(jià) 就是將第一個(gè)參數(shù)全部替換為第二個(gè)參數(shù)
System.out.println(str);
str=str.replaceFirst("c","6"); //遇到的第一個(gè)字符串"a"替換為字符串"6"
System.out.println(str);
}
注意:
replace方法可以傳遞字符參數(shù),將字符串內(nèi)所有出現(xiàn)此字符的替換為指定字符,
也可以傳字符串參數(shù),即字符串內(nèi)從左向右順序出現(xiàn)的子字符串等于字符串參數(shù)的內(nèi)容替換為指定字符串
而replaceAll和replaceFirst方法只能傳遞字符串參數(shù)
replaceAll即將字符串內(nèi)所有子字符串為字符串參數(shù)的替換為指定字符串(等價(jià)于replace替換字符串)
replaceFirst是從左往右順序?qū)⒌谝淮纬霈F(xiàn)的等于字符串參數(shù)的子字符串替換為指定字符串
⑥.字符串拆分
可以將一個(gè)完整的字符串按照指定的分隔符劃分為若干個(gè)子字符串
字符串拆分是很常用的操作,重點(diǎn)掌握
public static void main(String[] args) { //字符串拆分 方法
String str="good good study";
String[] strings=str.split(" ");//將字符串 以" "分成多組 會創(chuàng)建一個(gè)字符串?dāng)?shù)組 存放 返回字符串?dāng)?shù)組地址
System.out.println(Arrays.toString(strings));
String[] str1=str.split(" ",2); // 重載 將字符串最多分成2組字符串 多余不再分 返回字符串地址
for (int i = 0; i < str1.length; i++) { // for循環(huán)遍歷字符串?dāng)?shù)組
System.out.println(str1[i]);
}
String str2="192.168.1.0";
String [] strings1=str2.split("\\."); // 兩個(gè)\ 代表一個(gè)\轉(zhuǎn)義再. //. 表示轉(zhuǎn)義一個(gè).字符
// "丨" "*" "+" "." "\" 表示這些字符都需要轉(zhuǎn)義在前面加上"\\" 如:"\\|"表示"|" 而表示\字符需要 "\\\\"表示"\"
for (int i = 0; i < strings1.length; i++) {
System.out.println(strings1[i]);
}
String str3="192\\168\\1\\0"; // 一個(gè)\會為轉(zhuǎn)義字符 后面跟數(shù)字會轉(zhuǎn)義成八進(jìn)制字符 故表示\字符使其不為轉(zhuǎn)義 要\\表示一個(gè)\
String[] strings2=str3.split("\\\\"); // 表示字符串中的\字符 進(jìn)行拆分 需要\\\\
for (int i = 0; i < strings2.length; i++) {
System.out.println(strings2[i]);
}
String str4="192;168.1'0";
String[]strings3=str4.split("'|;|\\."); // 將";和.和' 用| 連接 表示要拿這三個(gè)字符串作為分隔 "
for (int i = 0; i < strings3.length; i++) {
System.out.println(strings3[i]);
}
}
注意:
split 方法 接受的參數(shù)是字符串類型 即根據(jù)接受的字符串在原字符串對象里按接受的分隔字符串進(jìn)行拆分,拆分的內(nèi)容不會出現(xiàn)進(jìn)行分隔的字符串
拆分后返回的是一個(gè)String類型數(shù)組對象,因?yàn)椴鸱譃榱硕鄠€(gè)字符串對象
split 兩個(gè)參數(shù)時(shí), 第二個(gè)為整數(shù) 即表示最多拆分的組數(shù), 從左往右開始拆分 當(dāng)超過最大組數(shù) 后面即便有分隔字符串也不會拆分
拆分時(shí)要注意轉(zhuǎn)義字符\ 當(dāng)字符串里想要表示一個(gè)\字符時(shí) 需要兩個(gè)\ 否則\111即會將111看成八進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)對應(yīng)的Ascll碼字符
當(dāng)分隔字符為丨 * + . \ 這五個(gè)特殊字符作為字符串時(shí) 需要在前面加上\將其轉(zhuǎn)義為作為分隔的字符串 如 \\丨 表示一個(gè)|
而在拆分時(shí)要以\字符作為拆分傳遞的字符串參數(shù)應(yīng)為\\\\ 表示字符串中的一個(gè)\字符串作為分隔符
丨 字符作為特殊字符 在作為分隔字符串時(shí)可以用| 后面再加字符串內(nèi)容即丨兩邊的字符串都可以作為分隔的字符串對字符串對象進(jìn)行分隔 如-丨, 拆分時(shí)會按- 或,對字符串對象進(jìn)行拆分
⑦.字符串截取
從一個(gè)完整的字符串之中截取出部分內(nèi)容為新的字符串
public static void main(String[] args) { //字符串 截取 方法
String str1="0123456789";
String str2=str1.substring(3);// 從字符串下標(biāo)為3位置開始截取 截取出3位置和其后的字符
System.out.println(str2);
String str3=str1.substring(4,7); //截取出 下標(biāo) [4,7)范圍內(nèi)的字符串
System.out.println(str3);
String str4=(String) str1.subSequence(0,7);// 也可以拆分 會返回charSequence接口類型 得向下轉(zhuǎn)型
System.out.println(str4);
}
注意:
subString一個(gè)整形參數(shù)時(shí)即從當(dāng)前整形開始截取到字符串末尾
subString兩個(gè)整形參數(shù)時(shí)是左閉右開區(qū)間 如: 3 5 截取的是下標(biāo)3和下標(biāo)4兩個(gè)字符組成的字符串
subSequence方法和subString方法一樣 但是只能設(shè)定兩個(gè)參數(shù)截取區(qū)間,其返回的是charSequence接口類型,需要再向下轉(zhuǎn)型
charSequence是String實(shí)現(xiàn)的一個(gè)接口,其內(nèi)部具有一些抽象方法和默認(rèn)方法~
⑧.其他一些常用字符串方法(大小寫轉(zhuǎn)換,去除左右空字符,字符串匹配)
字符串大小寫的轉(zhuǎn)換,子字符串的包含,字符串去除左右空格方法示例~
字符串還有很多方法,需要了解看文檔去使用,
字符串 中大小寫字符串的轉(zhuǎn)換
public static void main(String[] args) { //字符串大小寫轉(zhuǎn)換
String str1="ABCD";
String str2="abcd";
System.out.println(str1.toLowerCase()); //將字符串內(nèi)大寫字符都變成小寫
System.out.println(str2.toUpperCase()); //將字符串內(nèi)小寫字符都變成大寫
System.out.println(str1); //變化實(shí)際上返回的是一個(gè)新字符串里面存放了變化后的字符串
System.out.println(str1.toUpperCase()==str1); // str1本身是大寫 再轉(zhuǎn)換為大寫 沒有發(fā)生改變
System.out.println(str1.toLowerCase()==str1);// str1是大寫轉(zhuǎn)換為小寫 創(chuàng)建了新對象
// 如果當(dāng)前字符串全是小寫或者大寫不需要變化情況下 則沒有對字符串進(jìn)行修改會返回當(dāng)前字符串地址 (效率)
}
注意:
轉(zhuǎn)換后是創(chuàng)建新的字符串對象, 但在進(jìn)行轉(zhuǎn)換前會會先進(jìn)行檢查當(dāng)當(dāng)字符串內(nèi)容轉(zhuǎn)換前和轉(zhuǎn)換后沒有變化即全是大寫再轉(zhuǎn)換大寫時(shí),會直接返回當(dāng)前字符串對象,不做后續(xù)任何轉(zhuǎn)換 (減少不必要的操作)
大寫轉(zhuǎn)小寫:toLowerCase 小寫轉(zhuǎn)大寫 :toUpperCase 只涉及到對字母的轉(zhuǎn)換 ,當(dāng)不需要轉(zhuǎn)換時(shí),會返回原對象
==============================================================
trim去除字符串左右兩邊空格
public static void main(String[] args) { //去掉 字符串左右兩邊空白 方法
String str1=" hello world ";
String str2=str1.trim(); // 將左右兩邊的空白字符(空格 換行 回車產(chǎn)生的字符)全部刪掉
System.out.println(str2);
String str3=str1.replace(" ",""); //而使用替換操作 將空格字符串替換為空字符串會將空格全部替換
System.out.println(str3);
}
注意: trim方法 是將字符串對象左右兩邊產(chǎn)生的空白字符串全部清除,字符間的仍會存在
==============================================================
contains方法 判斷某個(gè)字符串是否為主字符串的子串
public static void main(String[] args) { //是否是子字符串
String str="abcde";
System.out.println(str.contains("ab")); //查詢一個(gè)字符串是否是另一個(gè)字符串的子字符串 實(shí)際底層用的 是indexOf方法
System.out.println(str.indexOf("bc"));// 第一次出現(xiàn)bc的首字符下標(biāo), 即也可以判斷字符串內(nèi)是否存在此字符串
}
contains實(shí)際上底層調(diào)用的是indexOf方法 即只要在主字符串內(nèi)找到第一次出現(xiàn)的要查找的字符即 存在包含關(guān)系 屬于方法復(fù)用~
此方法也是串中提到的字符串匹配問題~
,即判斷一個(gè)字符串是否為另一個(gè)字符串的子字符串,其判斷方法String已經(jīng)寫好,但有很多關(guān)于這方面的算法:BF暴力匹配算法 BM算法
KMP算法等 , 學(xué)編程 不僅要會利用內(nèi)置的庫方法 也要學(xué)習(xí)他人優(yōu)秀的算法鍛煉思維~
本文介紹了Java中對字符串進(jìn)行描述操作的String類,
以及其常用的一些基本操作方法,其所有共同點(diǎn)是對字符串的內(nèi)容進(jìn)行修改是會創(chuàng)建新字符串對象,對新字符串對象進(jìn)行修改后返回新字符串對象,
學(xué)會使用這些方法,對字符串的使用能更上一層
在下一篇會介紹String不可變性,字符串常量池和StringBuilder和StringBuffer文章來源:http://www.zghlxwxcb.cn/news/detail-422582.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-422582.html
到了這里,關(guān)于String類的學(xué)習(xí)筆記(上):介紹String類及其常用方法的使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!