整理Java編程中字符串的常用操作方法
字符
一般情況下,當(dāng)我們處理字符時(shí),我們用原始數(shù)據(jù)類型 char。
示例
char ch = 'a';
// Unicode for uppercase Greek omega character
char uniChar = '\u039A';
// an array of chars
char[] charArray ={ 'a', 'b', 'c', 'd', 'e' };
然而在開發(fā)中,我們會(huì)遇到需要使用對(duì)象而不是原始數(shù)據(jù)類型的情況。為了達(dá)到這個(gè)需求。Java 為原始數(shù)據(jù)類型 char 提供了包裝類 Character。
Character 類為操控字符提供了一系列有用處的類(例如:靜態(tài)類)。你可以借助 Character 構(gòu)造函數(shù)創(chuàng)造一個(gè) Character 對(duì)象。
Character ch = new Character('a');
Java 編譯器也將能在某些情況下為你創(chuàng)造一個(gè) Character 對(duì)象。例如:如果你將一個(gè)原始 char 傳輸?shù)揭粋€(gè)可預(yù)期對(duì)象的方法,編譯器就會(huì)為你自動(dòng)將 char 轉(zhuǎn)化成 Character。 如果轉(zhuǎn)換從反方向進(jìn)行,這個(gè)特點(diǎn)被稱之為自動(dòng)裝箱或拆箱。
示例
// Here following primitive char 'a'
// is boxed into the Character object ch
Character ch = 'a';
// Here primitive 'x' is boxed for method test,
// return is unboxed to char 'c'
char c = test('x');
轉(zhuǎn)義序列
有反斜杠(\)在前的字符是一個(gè)轉(zhuǎn)義序列并且對(duì)于編譯器有特殊的意義。
換行符(\n)在 System.out.println() 語句中經(jīng)常使用,在字符串打印出來后換行。
以下的表格展示了 Java 轉(zhuǎn)義序列:
| 轉(zhuǎn)義序列 | 描述 |
|---|---|
| \t | 在文本中插入一個(gè)標(biāo)簽。 |
| \b | 在文本中插入一個(gè)退格。 |
| \n | 在文本中插入一個(gè)換行符。 |
| \r | 在文本中插入一個(gè)回車。 |
| \f | 在文本中插入一個(gè)換頁。 |
| \' | 在文本中插入一個(gè)單引號(hào)字符。 |
| \\ | 在文本中插入一個(gè)反斜杠字符。 |
當(dāng)一個(gè)轉(zhuǎn)義序列遇到一個(gè)打印語句,編譯器就會(huì)相應(yīng)地解譯。
示例
如果你想把引號(hào)放入引號(hào)內(nèi),必須使用轉(zhuǎn)義序列, \” ,在內(nèi)部引用:
public class Test {
public static void main(String args[]) {
System.out.println("She said \"Hello!\" to me.");
}
}
這將產(chǎn)生以下結(jié)果:
She said "Hello!" to me.
Character 方法
以下列表是實(shí)現(xiàn) Character 類所有子類的重要的實(shí)例方法:
| SN | 方法描述 |
|---|---|
| 1 | isLetter() 確定具體的char值是一個(gè)字母 |
| 2 | isDigit() 確定具體的char值是一個(gè)數(shù)字 |
| 3 | isWhitespace() 確定具體的char值是一個(gè)空格 |
| 4 | isUpperCase() 確定具體的char值是一個(gè)大寫字母 |
| 5 | isLowerCase() 確定具體的char值是一個(gè)小寫字母 |
| 6 | toUpperCase() 返回指定字符值的大寫形式 |
| 7 | toLowerCase() 返回指定字符值的小寫寫形式 |
| 8 | toString() 返回代表指定的字符值的一個(gè)String對(duì)象,即一個(gè)字符的字符串 |
字符串
字符串,它被廣泛應(yīng)用于 Java 編程,是一個(gè)字符序列。在 Java 編程語言中,字符串是對(duì)象。
Java 平臺(tái)提供了 String 類來創(chuàng)建和操作字符串。
創(chuàng)建字符串
最直接的方式來創(chuàng)建一個(gè)字符串是這樣寫的:
String greeting = "Hello world!";
當(dāng)你創(chuàng)建一個(gè)字符串時(shí),編譯器在這種情況下用它的值創(chuàng)建一個(gè) String 對(duì)象,如:"Hello world!'。
任何其他對(duì)象可以通過使用 new 關(guān)鍵字,并通過構(gòu)造函數(shù)創(chuàng)建 String 對(duì)象。 String 類有11種構(gòu)造函數(shù)提供使用不同類型的字符串的初始值,如一個(gè)字符數(shù)組。
public class StringDemo{
public static void main(String args[]){
char[] helloArray = { 'h', 'e', 'l', 'l', 'o', '.'};
String helloString = new String(helloArray);
System.out.println( helloString );
}
}
這將產(chǎn)生以下結(jié)果:
hello.
注 String 類是不可變的,因此,一旦創(chuàng)建了 String 對(duì)象那么是不能改變的。如果需要大量修改字符的字符串,那么應(yīng)該使用 StringBuffer & StringBuilder 類。
String 長度
用于獲取有關(guān)對(duì)象的信息的方法稱為存取方法??梢院妥址黄鹗褂玫囊粋€(gè)存取方法是 length() ,它返回包含在字符串對(duì)象中的字符數(shù)。
下面的兩行代碼被執(zhí)行之后,len 等于17:
public class StringDemo {
public static void main(String args[]) {
String palindrome = "Dot saw I was Tod";
int len = palindrome.length();
System.out.println( "String Length is : " + len );
}
}
這將產(chǎn)生以下結(jié)果:
String Length is : 17
連接字符串
String類包括用于連接兩個(gè)字符串的方法:
string1.concat(string2);
這返回一個(gè)新的字符串,即在 string1 結(jié)尾處添加 string2。還可以使用 concat()方法連接字符串,如:
"My name is ".concat("Zara");
字符串更常使用 “ + ” 運(yùn)算符連接在一起,如:
"Hello," + " world" + "!"
這將產(chǎn)生:
"Hello, world!"
看看下面的例子:
public class StringDemo {
public static void main(String args[]) {
String string1 = "saw I was ";
System.out.println("Dot " + string1 + "Tod");
}
}
這將產(chǎn)生以下結(jié)果:
Dot saw I was Tod
創(chuàng)建格式化字符串
已經(jīng)有 printf() 和 format() 方法來打印輸出格式的數(shù)字。 String 類有一個(gè)等價(jià)的方法 format(),它返回一個(gè) String 對(duì)象,而不是一個(gè) PrintStream 對(duì)象。
使用字符串的靜態(tài) format() 方法允許創(chuàng)建可重復(fù)使用的格式化字符串,而不是一次性的 print 語句。例如,如果代替以下方法:
System.out.printf("The value of the float variable is " +
"%f, while the value of the integer " +
"variable is %d, and the string " +
"is %s", floatVar, intVar, stringVar);
可以這樣寫:
String fs;
fs = String.format("The value of the float variable is " +
"%f, while the value of the integer " +
"variable is %d, and the string " +
"is %s", floatVar, intVar, stringVar);
System.out.println(fs);
String 方法
這里是由 String 類支持的方法列表:
| SN | 方法及描述 |
|---|---|
| 1 | char charAt(int index) 返回指定索引處的字符。 |
| 2 | int compareTo(Object o) 將這個(gè)字符串與另一個(gè)對(duì)象比較。 |
| 3 | int compareTo(String anotherString) 比較兩個(gè)字符串的字典順序。 |
| 4 | int compareToIgnoreCase(String str) 比較兩個(gè)字符串按字典順序,不區(qū)分大小寫的差異。 |
| 5 | String concat(String str) 將指定的字符串串連到這個(gè)字符串的結(jié)尾。 |
| 6 | boolean contentEquals(StringBuffer sb) 返回true當(dāng)且僅當(dāng)該字符串代表相同的字符序列作為指定的StringBuffer。 |
| 7 | static String copyValueOf(char[] data) 返回表示所指定的數(shù)組中的字符序列的字符串。 |
| 8 | static String copyValueOf(char[] data, int offset, int count) 返回表示所指定的數(shù)組中的字符序列的字符串。 |
| 9 | boolean endsWith(String suffix) 測(cè)試此字符串是否以指定的后綴結(jié)束。 |
| 10 | boolean equals(Object anObject) 比較此字符串與指定的對(duì)象。 |
| 11 | boolean equalsIgnoreCase(String anotherString) 比較這個(gè)字符串到另一個(gè)字符串,忽略大小寫的考慮。 |
| 12 | byte getBytes() 將此String解碼使用平臺(tái)的默認(rèn)字符集,并將結(jié)果存儲(chǔ)到一個(gè)新的字節(jié)數(shù)組中的字節(jié)序列。 |
| 13 | byte[] getBytes(String charsetName 將此String解碼使用指定的字符集的字節(jié)序列,并將結(jié)果存儲(chǔ)到一個(gè)新的字節(jié)數(shù)組。 |
| 14 | void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 從這個(gè)字符串復(fù)制字符到目標(biāo)字符數(shù)組。 |
| 15 | int hashCode() 為這個(gè)字符串返回一個(gè)哈希代碼。 |
| 16 | int indexOf(int ch) 返回此字符串指定字符第一次出現(xiàn)處的索引。 |
| 17 | int indexOf(int ch, int fromIndex) 返回索引這個(gè)字符串中指定字符第一次出現(xiàn)處,指定索引處開始搜索。 |
| 18 | int indexOf(String str) 返回此字符串指定子字符串的第一次出現(xiàn)處的索引。 |
| 19 | int indexOf(String str,int fromIndex) 返回這個(gè)字符串中指定子字符串的第一次出現(xiàn)處的索引,從指定的索引處開始。 |
| 20 | String intern() 返回字符串對(duì)象的規(guī)范化表示。 |
| 21 | int lastIndexOf(int ch) 返回此字符串指定字符最后一次出現(xiàn)處的索引。 |
| 22 | int lastIndexOf(int ch, int fromIndex) 返回此字符串指定字符最后一次出現(xiàn)處的索引,從指定索引開始向后搜索。 |
| 23 | int lastIndexOf(String str) 返回此字符串指定子字符串的最右邊出現(xiàn)處的索引。 |
| 24 | int lastIndexOf(String str, int fromIndex) 返回索引這個(gè)字符串中指定子字符串的最后出現(xiàn)處,從指定的索引開始處向后搜索。 |
| 25 | int length() 返回此字符串的長度。 |
| 26 | boolean matches(String regex) 判斷此字符串是否與給定的正則表達(dá)式匹配。 |
| 27 | boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) 測(cè)試兩個(gè)字符串的區(qū)域等于。 |
| 28 | boolean regionMatches(int toffset, String other, int ooffset, int len) 測(cè)試兩個(gè)字符串的區(qū)域都是相等的。 |
| 29 | String replace(char oldChar, char newChar) 返回從newChar更換oldChar所有出現(xiàn)在此字符串中產(chǎn)生一個(gè)新的字符串。 |
| 30 | String replaceAll(String regex, String replacement 替換此字符串中給定的正則表達(dá)式與給定替換相匹配的每個(gè)子字符串。 |
| 31 | String replaceFirst(String regex, String replacement) 替換此字符串匹配給定的正則表達(dá)式給定替換第一個(gè)子字符串。 |
| 32 | String[] split(String regex) 分割圍繞給定的正則表達(dá)式匹配的這個(gè)字符串。 |
| 33 | String[] split(String regex, int limit) 分割圍繞給定的正則表達(dá)式匹配的這個(gè)字符串。 |
| 34 | boolean startsWith(String prefix) 測(cè)試此字符串是否以指定的前綴開頭。 |
| 35 | boolean startsWith(String prefix, int toffset) 測(cè)試此字符串是否以指定索引開始的指定前綴開始。 |
| 36 | CharSequence subSequence(int beginIndex, int endIndex) 返回一個(gè)新的字符序列,這個(gè)序列的子序列。 |
| 37 | String substring(int beginIndex) 返回一個(gè)新的字符串,它是此字符串的一個(gè)子字符串。 |
| 38 | String substring(int beginIndex, int endIndex) 返回一個(gè)新的字符串,它是此字符串的一個(gè)子字符串。 |
| 39 | char[] toCharArray() 這個(gè)字符串轉(zhuǎn)換為一個(gè)新的字符數(shù)組。 |
| 40 | String toLowerCase() 將所有在此字符串中的字符使用默認(rèn)語言環(huán)境的規(guī)則小寫。 |
| 41 | String toLowerCase(Locale locale) 將所有在此字符串中的字符使用給定Locale的規(guī)則小寫。 |
| 42 | String toString() 這個(gè)對(duì)象(它已經(jīng)是一個(gè)字符串?。┓祷刈址问剑ㄟ@里是自己本身)。 |
| 43 | String toUpperCase() 使用默認(rèn)語言環(huán)境的規(guī)則將此String中所有的字符轉(zhuǎn)換為大寫。 |
| 44 | String toUpperCase(Locale locale) 使用給定Locale的規(guī)則將此String中所有的字符轉(zhuǎn)換為大寫。 |
| 45 | String trim() 返回字符串的一個(gè)副本,開頭和結(jié)尾的空格去除。 |
| 46 | static String valueOf(primitive data type x) 返回傳遞的數(shù)據(jù)類型參數(shù)的字符串表示形式。 |
相關(guān)文章
Java 實(shí)戰(zhàn)項(xiàng)目錘煉之網(wǎng)上花店商城的實(shí)現(xiàn)流程
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+jsp+servlet+mysql+ajax實(shí)現(xiàn)一個(gè)網(wǎng)上花店商城系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平2021-11-11
Spring?Session(分布式Session共享)實(shí)現(xiàn)示例
這篇文章主要介紹了Spring?Session(分布式Session共享)實(shí)現(xiàn)示例,文章內(nèi)容詳細(xì),需要的朋友可以參考下2023-01-01
將項(xiàng)目上傳到Maven中央倉庫(2023最新版)
本文主要介紹了將項(xiàng)目上傳到Maven中央倉庫(2023最新版),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
spring?boot學(xué)習(xí)筆記之操作ActiveMQ指南
ActiveMQ是一種開源的基于JMS規(guī)范的一種消息中間件的實(shí)現(xiàn),ActiveMQ的設(shè)計(jì)目標(biāo)是提供標(biāo)準(zhǔn)的,面向消息的,能夠跨越多語言和多系統(tǒng)的應(yīng)用集成消息通信中間件,這篇文章主要給大家介紹了關(guān)于spring?boot學(xué)習(xí)筆記之操作ActiveMQ指南的相關(guān)資料,需要的朋友可以參考下2021-11-11
Java深入了解數(shù)據(jù)結(jié)構(gòu)之哈希表篇
哈希表是一種根據(jù)關(guān)鍵碼去尋找值的數(shù)據(jù)映射結(jié)構(gòu),該結(jié)構(gòu)通過把關(guān)鍵碼映射的位置去尋找存放值的地方,說起來可能感覺有點(diǎn)復(fù)雜,我想我舉個(gè)例子你就會(huì)明白了,最典型的的例子就是字典2022-01-01
SpringBoot與Redis的令牌主動(dòng)失效機(jī)制實(shí)現(xiàn)
本文詳細(xì)介紹了基于SpringBoot和Redis實(shí)現(xiàn)令牌主動(dòng)失效機(jī)制,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12
比較Java數(shù)組和各種List的性能小結(jié)
這篇文章主要是分別對(duì)Java數(shù)組、ArrayList、LinkedList和Vector進(jìn)行隨機(jī)訪問和迭代等操作,并比較這種集合的性能。有需要的可以參考借鑒。2016-08-08

