1. 程式人生 > >JAVA基礎(31)---API之String

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

                      按字典順序比較兩個字串,不考慮大小寫