1. 程式人生 > >關於String類中常用的方法

關於String類中常用的方法

在Java中,常用處理字串的類,在java.lang包中,分別是String和StringBuffer,這兩個類被宣告為final,所以它們沒有子類,不能自定義類來繼承它們。 因為String和StringBuffer類在java.lang包中,所以它們可以自動被所有程式,即使用時不用import來引入它們即可。
這裡就總結一下String類的常用方法
1、public int length()方法
字串的長度:是指字串所包含的字元的個數,呼叫String類的length() 方法可以得到一個字串的長度。如:“你好abcd”.length()的值為6
2、字串連線
“+”運算子可以連線兩個字串,產生一個String物件。也允許使用一連串的“+”運算子,把多個字串物件連線成一個字串物件。
字串還可以和其他基本型別的資料連線,連線後成為新的字串。如 int age=10; String str=“He is”+age+”years old”;
3、public char charAt(int index)
返回字串指定位置上的字元。索引範圍是從0到length() – 1;其中,index是想要得到的字元的下標,並且其值必須為非負的。

例如:String str=“hello world”;
           char ch=str.charAt(1);   //e

4、public void getChars(int Start,int End,char[] target,int targetStart)可以從字串中擷取多個字元。
其中,Start是開始位置,End是結束位置,因此擷取的字串包含了從Start到End的字元(不包括End位置上字元),擷取的字串存放在字元陣列target中,從targetStart位置開始存,在此必須確保target足夠大,能容納所擷取的字串。否則,會丟擲陣列越界異常。
5、public byte[] getBytes()方法
使用作業系統平臺的預設字符集將此字串編碼為 byte 序列,並將結果儲存到一個byte 陣列中。例如:中文Xp系統預設gbk字符集(有1個位元組字元編碼(和ASCII碼一致),也有2個位元組的字元編碼(比如漢字、特殊字元等))

例如:String str=“abc”;
          byte[] bytes=str.getBytes();          System.out.println(Arrays.toString(bytes));//[97,98,99]
public byte[] getBytes(String charsetName);

使用指定的字符集將此字串編碼為 byte 序列,並將結果儲存到一個byte 陣列中。

例如:String str=“中國”; byte[] bytes=str.getBytes(“utf-8”);
      String  new_str=new String(bytes,”utf-8”);
      System.out.println(new_str);  //中國

注意:在使用getBytes()方法對字串編碼時,特別是中文字串,使用不同的字符集,導致編碼結果是不同的。
7、 字串的比較
(1) public boolean equals(Object obj)和public boolean equalsIgnoreCase(String anotherString)方法
這兩個方法可以比較兩個字串內容是否相等。如果兩個字串具有相同的字元和長度,它返回true;否則返回false。前者比較兩個字串的時候對字母大小寫是敏感的,而後者不區分字母大小寫。
(2) public boolean startsWith(String s)和public boolean endsWith(String s)方法
startsWith()方法判斷當前字串的字首是否是字串s,而endsWith()方法判斷當前字串的字尾是否是字串s。

例如:String tom=“2605111”; String jerry=“2105222”
  tom.startsWith(“260”)的值是true;jerry.startWith(“260”)的值是false
tom.endsWith(“111”)的值是true,jerry.endsWith(“111”)的值是false

3) equals()與= =的區別
equals()方法比較兩個字串物件中的內容是否相等,(比較內容)而= =運算子是比較兩個字串物件是否指向同一物件(比較地址)
(4) public int compareTo(String s)
比較兩個字串的大小,s是被比較的字串,此方法就是依次比較兩個字串對應字元的unicode值。如果兩個字元的值相等則繼續後續比較,否則直接返回兩個unicode的差值。如果兩個字串完全一樣,則返回0。
a.compareTo(s):值為負值時,表示a小於s;
值為正值時,表示a大於s;
值等於0時,表示a等於s;
(5) public boolean contains(String s)方法
判斷當前字串是否含有字串s,如果含有返回true;否則,返回false。

例如:String tom=“student”; tom.contains(“stu”); //true    tom.contanins(“ok”);//false

8、 字串的搜尋
允許在字串中搜索指定的字元或子字串。其中,indexOf方法用來搜尋字元或子字串首次出現的位置,而lastIndexOf方法用來搜尋字元或子字串最後一次出現的位置。
(1) indexOf()方法
indexOf方法有4種形式,分別如下:

public int indexOf(int ch)//”abca”.indexOf(97);返回97對應的字元a,在字串中首次出現的位置;結果為0
public int indexOf(int ch,int fromIndex)//”abca”.indexOf(97,1);返回97對應的字元a,從指定的索引位置1開始,在字串中首次出現的位置;結果為3;
public int indexOf(String str)//”abca”.indexOf(“abc”);返回指定的子字串abc在字串adca中首次出現的位置;結果為0;
public int indexOf(String str,int fromlndex)//“abca”.indexOf(“ca”,1);返回指定的字串ca,從指定的索引位置1開始,在字串中首次出現的位置;結果為2

注意:未搜尋到字元或字串則返回-1
(2) lastlndexOf()方法
lastlndexOf方法也有4種形式,分別如下。

int lastIndexOf(int ch)//”abca”.lastIndexOf(97);  結果3
int lastIndexOf(int ch,int fromIndex)//”abca”.lastIndexOf(97,4);結果-1
int lastIndexOf(String str)//”abca”.lastIndexOf(“abc”);結果0
int lastlndexOf(String str,int fromlndex) //”abca”.lastIndexOf(“ca”,1);結果2

9、字串修改
字串的修改包括取字串中的子串、字串之間的連線、替換字串中的某字元、消除字串的空格等功能。在String類中有相應的方法來提供這些功能:

String substring(int startIndex)//返回從索引位置startIndex開始到字串結尾的子字串(新產生的字串),原字串保持不變。
如:“abca”.substring(1); //”bca”
String substring(int startIndex,int endlndex)//返回從索引位置startIndex開始到索引位置endIndex結束的子字串,不包括endIndex位置上字元。
如:”abca”.substring(1,3); //”bc”
String concat(String str)//用來連線兩個字串,建立一個新的字串物件,該物件包含原字串,同時把str字串跟在原字串後面。原字串保持不變。

如:“abca”.concat(“123”);//”abca123”
String replace(char original,char replacement)//用來替換到字串中的某個字元,會建立一個新的字串物件,原字串保持不變。
如:”abca”.replace(‘a’,’m’);  //”mbcm”

String trim()//用來去除字串前後多餘的空格

如:”..”+” abca ”+”..”;   //”.. abca ..”
“..”+” abca ”.trim()+”..” //”..abca..”

注意:因為String字串是不能改變的物件,因此呼叫上述方法對字串進行修改都會產生新的字串物件,原字串保持不變。
10、 valueOf()方法
valueOf()方法是String類的靜態方法,利用這個方法,可以將幾乎所有的Java基本資料型別轉換為String型別。這個方法是String型別和其他Java基本型別之間的一座轉換橋樑。除了把Java中的基本型別轉換為字串之外,valueOf方法還可以把Object類和字元陣列轉換為字串。
valueOf()的通用形式如下,總共有9種形式。

static String valueOf(boolean b)
static String valueOf(char c)
static String valueOf(char[] data)
static String valueOf(char[] data,int offset,int count)
如:char[] chars={‘w’,’e’,’l’,’c’,’o’,’m’};
String.valueOf(chars,3,3);   //”com”
static String valueOf(double d)
static String valueOf(float f)
static String valueOf(int i)
static String valueOf(long l)
static String valueOf(Object obj)
11、 public static int parseInt(String s)方法

是java.lang包中的Integer類的靜態方法,可以將由“數字”字元組成的字串,如“123456”,轉化為int型資料,例如:
int x=Integer.parInt(“123456”); //123456
類似地,使用java.lang包中的Byte,Short,Double,Long,Float類的靜態方法;

public static byte parseByte(String s);
public static short parseShort(String s);
public static long parseLong(String s);
public static float parseFloat(String s);
public static double parseDouble(String s);

將有“數字”字元組成的字串,轉化成基本資料型別。
還可以使用Long類中的下列靜態方法得到整數的各種進位制的字串表示:

public static String toBinaryString(long i);
public static String toOctalString(long i);
public static String toHexString(long i);
public static String toString(long i,int p); //返回整數i的p進製表示
Long.toString(8,2);  //”1000”

12、public String toString()方法
所有的類都預設是java.lang包中Object類的子類。Object類有一個public String toString()方法,一個物件通過呼叫該方法可以獲的該物件的字串表示。
一個物件呼叫toString()方法返回字串的一般形式:
建立物件的類的名字@物件的引用的字串表示

Student stu=new Student();
stu.toString();  //[email protected]

顯然預設的toString()方法是不能滿足子類要求的,所以子類可以覆蓋toString()方法。例如:java.util包中Date類就覆蓋了toString方法,覆蓋的方法返回時間的字串表示。

/*【例5-6 】定義一個Person類,覆蓋Object的toString()方法,再定義一個測試類,輸出Person的資訊。*/
class Person {
	String name;
	int age;
	Person(String n,int a){
		this.name=n;
		this.age=a;
	}
	public String toString(){   //覆蓋超類的toString()方法,返回自己的字串物件
		return "姓名是"+name+",年齡是"+age+"歲";
	}
	public String old(){
	return super.toString();
	}
}
public class PersonDemo{
	public static void main(String[] args) {
		Person p=new Person("王冷晗",30);
		System.out.println(p.toString());
		System.out.println(p.old());
	}