JAVA基礎(31)---API之String
String
類代表字串。Java 程式中的所有字串字面值(如 "abc"
)都作為此類的例項實現。
字串是常量;它們的值在建立之後不能更改。字串緩衝區支援可變的字串。因為 String 物件是不可變的,所以可以共享。例如:
String str = "abc";
等效於:
char data[] = {'a', 'b', 'c'}; String str = new String(data);
下面給出了一些如何使用字串的更多示例:
System.out.println("abc"); String cde = "cde"; System.out.println("abc" + cde); String c = "abc".substring(2,3); String d = cde.substring(1, 2);
字串記憶體結構
String str1 = " abc ",這種建立字串,系統會在字串常量區先查詢是否有 abc 這個字串,如果沒有就分配一個空間創建出 abc 字串,然後在棧區分配空間建立 str1 儲存 abc 在字串常量池中的地址。
String str2 = " abc",當在建立abc字串時,同理先在字串常量區查詢,已經存在了,直接將地址儲存到棧區 str2 的記憶體空間。
String str3 = new String("abc") ,這種方式建立字串,首先在棧區分配給 str3 一個記憶體空間,在堆區分配一個空間建立abc,並將這個空間的地址儲存到 str3 的記憶體空間。在堆區建立完字串後,系統會檢測字串常量區是否有這個字串,如果沒有,就會將這個字串複製到字串常量區。
String str4 = new String("ab"),建立過程同上,因為字串常量區沒有 ab 這個字串,所以系統就會在字串常量區分配一個記憶體空間,將 ab 複製過去。
String str5 = "ab",直接將字串常量區裡 ab 的地址儲存到棧區 str5 的記憶體空間。
String str6 = new String();
str6 = "abc"; //第一句先在棧曲建立 str6 的記憶體空間,然後堆區也會建立一個記憶體空間,將這個記憶體空間的地址儲存到 str6 的記憶體空間中,第二句,賦值給 str6 一個abc字串,然後在字串常量區查詢,將abc的地址替換掉 str6裡儲存的地址。
在String類中,也就是String物件中
如果使用 == 比較:比較的是兩個字串的地址是否一樣
如果使用 equals 方法比較,比較的是兩個字串的內容是否一樣
常用方法
1、charAt
返回指定索引處的 char 值
public class StringDemo{
public static void main(String[] args){
String str5 = "javase";
char c = str5.charAt(2);
System.out.println(c);
int a = str5.codePointAt(2);
System.out.println(a);
}
}
2、codePointBefore
返回指定索引之前的字元
3、compareTo
按字典順序比較兩個字串
4、compareToIgnoreCase
按字典順序比較兩個字串,不考慮大小寫