1. 程式人生 > >String 類 和StringBuffer(學會使用API)

String 類 和StringBuffer(學會使用API)

public final String extends Object
//繼承和修飾

字串是常量,值建立之後不可被更改。字串緩衝區支援可變字串。String物件是不可變的

String str = "hello";
str = "world";
//先在棧裡建立 str  在常量池裡建立“hello”,當更改的時候,建立“world”,改變str的指向,然後hello被回收機制處理
str = str + "world";
//建立“worldworld”
str="hello";
//銷燬後再次建立

String str2 = new String();
//一旦建立不可更改,空的,重新賦值要被銷燬,一般不這樣建立


String str = “hello”;
String str1 = "hello";
System.out.println(str==str1);
//輸出結果為true,地址可共享
String str = new String("hello”);
String str1 = "hello";
syso(str == str1);
//結果為false
//str2 先在堆裡建立了new String(),str1在常量池建立 hello 比較的地址是 new String()和hello,所以說地址不一樣。

String(char[] value)


char[] ch = {'h','e','l','l','o'};
String str = new String (ch);

String(char[] value , int offset , int count)
offset 是字串當成陣列後的索引
count 是從offset開始一共的字元個數

String str = “hello”;
String str1 = new String(str,1,3);
syso
//    ell

String (byte[] byte)

byte[] by = {65,66,67};
String str = new String(by);
syso(str);
// abc
//按照ascii碼錶轉化

String(byte[] byte,int offset,int count);
和 String(char[] value , int offset , int count);類似

String(byte[] byte , charset charset);
charset 是編碼格式,(GBK,UTF-8,ISO-8859-1等),資料庫使用

String str = “hello”;
str+=“world”;
syso(str);
//輸出三個字串

方法
判斷功能
equals(String str)區分字串的內容是否相同,區分大小寫
equalsIgnoreCase(String str) 不區分大小寫
contains(String str) 判斷一個字串裡是夠包含另外一個字串 區分大小寫
startsWith(String str)判斷字串是否已指定的字串開頭
endsWith(String str)判斷字串是否以指定的字串結尾
isEmpty(String str)判斷是否為空 ,寫null會報異常
獲取功能
length() 長度
charAt(int index)索引所在的字元
indexOf(String str)判斷字元所在索引
indexOf(String str , fromIndex)

  • 前閉後開 10 <= a <20
String str = “hellohello”;
syso(“h”,3);
//從索引開始判斷

字串剪下

helloworldjavac++
substring(int beginIndex) 返回一個新的字串,它是此字串的一個子字串。該子字串從指定索引處的字元開始,直到此字串末尾。
substring(int beginIndex, int endIndex)
beginIndex - 起始索引(包括)。
endIndex - 結束索引(不包括)。

字串轉化功能
getBytes();
toCharArray();
valueOf();

public class Demo {
	public static void main(String[] args) {
		
		String str = "hello";
		byte[] bytes = str.getBytes();
		//轉換位元組陣列,位元組是數字
		for(int i = 0 ; i<bytes.length ; i++){
			System.out.print((char)bytes[i]);//bytes[i] 輸出的是ascii碼,要強制轉換
		}
		System.out.println();
		//轉換字元陣列
		char[] charArray = str.toCharArray();
		for(int i = 0 ; i<bytes.length ; i++){
			System.out.print(charArray[i]);
		}
		int a = 10;
		String st = a+" ";
		String st1 = String.valueOf(a);//valueOf是靜態方法,直接類名呼叫
		
	}

}

StringBuffer
執行緒安全的可變字元序列
public StringBuffer()
構造一個其中不帶字元的字串緩衝區,起初始容量為16個字元
public StringBuffer(int capacity)
構造一個不帶字元,單具有出事容量的字串緩衝區
public StringBuffer(String str)
構造一個字串緩衝區,並將其內容初始化,該字串的初始容量為 16 加上字串引數的長度。

功能方法
  •  	length()  得到的是實際的字串長度
    
  •  	capacity()得到的是理論的字串長度
    
  • 新增功能
  •  append()  追加  到末尾
    
  •  insert(int offset,String str)  在指定的位置插入一個字串物件
    
  • 刪除功能
  •  delete(int start , int end)  在字串中刪除指定位置開始 到指定位置結束的字串序列
    
  •  	helloworldjava   前閉後開
    
  •  deleteCharAt(int index);  刪除指定位置的字元
    
  • 翻轉功能
  •  reverse() 
    
  • 替換功能
  •  replace(start, end, str)   前閉後開
    
  • 擷取功能
  •  substring
    
  • String 和StringBuffer 轉換
  •  用的構造
    
  • StringBuffer sf =new StringBuffer(“hello”);
  • String str = new Stirng(sf);
  • 字串轉換功能
  •  getBytes()  將一個字串轉換成位元組陣列
    
  •  toCharArray()將一個字串轉換成字元陣列
    
  •  valueOf( ? ) 將指定的內容轉換成字元轉
    
  •  字串的大小轉換
    
  •  	toLowerCase()  將字串都轉換成小寫
    
  •  	toUpperCase()  將字串都轉換成大寫
    
  • 字串的其他方法
  • 去除兩端空格
  • trim