字符串
-
String對象的方法
| 方法 | 描述 |
|---|---|
| length() | 返回字符串的長度,也就是字符串的字符數(shù) |
| charAt() | 返回字符串中指定位置的字符 |
| concat(s1) | 將本字符串和s1字符串連接,返回一個新的字符串 |
| toUpperCase() | 返回一個新的字符串,所有字母大寫 |
| toLowerCase() | 返回一個新的字符串,所以字母小寫。 |
| trim() | 返回新的字符串,去掉兩邊空白字符 |
上面的方法只能從字符串實例調(diào)用,這些方法稱為實例方法。
調(diào)用實例方法的語法是:
reference-Variable.methodName(arguments)
調(diào)用靜態(tài)方法的語句是:
ClassName.methodName(arguments)
1.Java允許在不創(chuàng)建新變量的情況下,使用字符串字面值直接引用字符串,
如Hello World.length()是正確的。
2.s.charAt(index),其下標(biāo)index的取值范圍在0~s.length()-1之間。s.charAt(s.length())會造成一個StringIndexOutOfBoundsException異常。
-
子串
String類的substring方法可以從一個較大的字符串提取出一個子串。
String greeting = "Hello";
String s = greeting.substring(0,3);
substring方法的第二個參數(shù)是不想 復(fù)制的第一個位置。字符串是s.substring(a,b)的長度為b-a。
-
連接字符串
使用concat方法連接兩個字符串。Java也可以使用“+”號連接(拼接)兩個字符串。當(dāng)一個字符串與一個非字符串的值進(jìn)行拼接時,后者被轉(zhuǎn)換成字符串。
-
不可變字符串
String類沒有提供用于修改 字符串的方法。如果要修改字符串,先提取需要的字符串再拼接上替換的字符串。由于String字符串的不可變性我們可以十分肯定常量池中一定不存在兩個相同的字符串
String str = "hello";
先在棧中創(chuàng)建引用變量str,再看看常量池中有沒有字符串"hello",如果有直接將str變量指向字符串,沒有就在堆中(常量池)創(chuàng)建hello放入常量池然后指向它。
String str = new String("hello");
則是在堆中創(chuàng)建新的對象,放在堆內(nèi)存中。
靜態(tài)常量池:即*.class文件中的常量池,class文件中的常量池不僅僅包含字符串(數(shù)字)字面量,還包含類、方法的信息,占用class文件絕大部分空間。
運行時常量池:則是jvm虛擬機(jī)在完成類裝載操作后,將class文件中的常量池載入到內(nèi)存中,并保存在方法區(qū)中。
我們常說的常量池,就是指方法區(qū)中的運行時常量池。JDK1.7及之后版本的 JVM 已經(jīng)將運行時常量池從方法區(qū)中移了出來,在 Java 堆(Heap)中開辟了一塊區(qū)域存放運行時常量池。
詳情

-
檢測字符串是否相等
1.使用equals方法檢測兩字符串是否相等,對于表達(dá)式:
s.equals(t)
如果字符串s和字符串t相等,則返回變量true,否則返回false。
2.想要檢查兩個字符串是否相等,而且不區(qū)分大小寫可以使用equalsIgnoreCase方法。
3.如果虛擬機(jī)始終將相同的字符串共享, 就可以使用=運算符檢測是否相等。但實際上
只有字符串常量是共享的,而 + 或 substring 等操作產(chǎn)生的結(jié)果并不是共享的。因此,千萬不
要使甩== 運算符測試字符串的相等性, 以免在程序中出現(xiàn)糟糕的 bug。
-
空串與Null串
空串""是長度為零的字符串,可以調(diào)用一下代碼檢查字符串是否為空:
if (str.length()==0)
或
if (str.equals(""))
檢查一個字符串是否是null,要使用以下條件:
if (str == null)
-
構(gòu)建字符串
如果需要用許多小段的字符串構(gòu)建一個字符串, 那么應(yīng)該按照下列步驟進(jìn)行。 首先, 構(gòu)建一個空的字符串構(gòu)建器:
StringBuilder builder = new StringBuilder();
當(dāng)每次需要添加一部分內(nèi)容時,就調(diào)用append方法。
builder.append();
在需要構(gòu)建字符串時就調(diào)用toString方法,就能得到String對象,
String completedString = builder.toStringO;
注釋:在 JDK5.0 中引入 StringBuilder 類。 這個類的前身是 StringBuffer, 其效率稍有些低, 但允許采用多線程的方式執(zhí)行添加或刪除字符的操作 U 如果所有字符串在一個單線程中編輯 (通常都是這樣,) , 則應(yīng)該用 StringBuilder 替代它。 這兩個類的 AP丨是相同的。