1. 程式人生 > >Java應用程式開發學習之String類的使用方法

Java應用程式開發學習之String類的使用方法

在原來文章介紹了有關Java程式開發的詳細步驟:

https://blog.csdn.net/morixinguan/article/details/84956938

Java字串主要有以下特點:

1、字串的內容永不改變
2、由於字串的內容不可改變,所以字串是可以共享使用的,類似於C語言的巨集定義
3、字串效果上相當於是char[]字元陣列,但底層原理是byte[]位元組陣列

關於字串的建立方法我們還是按照最開始的方式,檢視JDK API文件的構造方法:

這麼多的構造方法?我們需要都記住它麼?不用,我們記得最常用的三種構造方法就可以了,如下:

public String();

                   建立一個空白字串,不含有任何內容
public String(char [] array); 根據字元陣列的內容,來建立對應的字串
public String(byte [] array); 根據位元組陣列的內容,來建立對應的字串

還有,我們也可以不用構造方法,直接建立也可以,如下:

String  str = "Hello World" ;

這樣系統就預設給你自動構造了,這種直接寫上雙引號的方式,就是字串物件,而這樣的形式是儲存在字串常量池中。

在Java的String類中,有許多方法,我們只列舉最常用的方法,其餘的方法需要的時候再檢視。

public boolean equals(Object obj);                      引數可以是任何物件,任何物件都能用Object進行接收
public boolean equalsIgnoreCase(Object obj) ;  和equals差不多,但忽略大小寫,只有英文才會區分大小寫
public int length();                                                  獲取字串當中含有的字元個數,拿到字串的長度
public String concat(String str)  

                           將當前的字串和引數字串拼接成為返回值新的字串
public char charAt(int index);                                獲取指定索引位置的單個字元。(索引從0開始。)
public int indexOf(String str);                                查詢引數字串在本地字串當中首次出現索引位置,沒有返回-1值
public String substring(int index);                        擷取從引數位置一直到字串末尾,返回新字串。
public String substring(int begin,int end);           擷取從begin開始,一直到end結束,獲取中間的字串[begin,end),包含左右,不包含右邊。
public char[] toCharArray() ;                                 將當前字串拆分成為字元陣列作為返回值。
public byte[] getBytes();                                        獲得當前字串底層的位元組陣列。
public String replace(charSequence oldString,charSequence newString); 將所有出現的老字串替換成為新的字串,返回替換之後的結果新字串
charSequence表示可以用字串型別
應用場景:遊戲中出現罵人的詞彙,有過濾器,用*可以替換過濾詞彙
public String[] split(String regex); 按照引數的規則,將字串切分成為若干個字串
split方法的引數其實是一個"正則表示式",如果按照英文句點"."進行切分,必須寫\\.,不然會解析出錯。

針對equals方法容易出錯的點:

推薦用"Hello".equals(str)的方式,而不推薦用str.equals(str1)的方式。

如虛擬碼所示,當str為null時,用equals方法進行比較會報空指標異常。

下面看一個綜合的案例:

package app_one;
public class hello {

	public static void main(String[] args) 
	{
		String str = "Hello World";
		String str1 = "Hello World";
		String str2 = "hello world";
		if(str.equals(str1))
			System.out.println("字串相同");
		//忽略大小寫進行比較
		if(str.equalsIgnoreCase(str2))
			System.out.println("字串相同");
		//獲取字串的長度
		int len = str.length();
		System.out.println(len);
		//拼接兩個字串
		String newStr = str1.concat(str2);
		System.out.println(newStr);
		//獲取指定索引的單個字元
		char ch = str.charAt(2);
		System.out.println(ch);
		//查詢引數字串在本地當中首次出現索引位置
		int index = str.indexOf("lo");
		System.out.println(index);
		//擷取字串
		String substr = str.substring(2);
		System.out.println(substr);
		String substr1 = str.substring(2, 5);
		System.out.println(substr1);
		//將字串轉換為字元陣列作為返回值
		char []chars = str.toCharArray();
		System.out.println("字元陣列長度為:"+chars.length+" 獲取索引為2的單個字元:"+chars[2]);
		//轉換為位元組陣列
		byte [] bytes = str.getBytes();
		for(int i = 0 ; i < bytes.length ; i++)
		{
			System.out.println(bytes[i]);
		}
		//替換字串中的字元,將所有的l替換為x
		String replacestr = str.replace("l", "x");
		System.out.println(replacestr);
		//切割字串
		String sensor_data = "110011 22341 00003";
		String []split_data = sensor_data.split(" ");
		for(int i = 0 ; i < split_data.length ; i++)
		{
			System.out.println("分割引數:"+i+" "+split_data[i]);
		}
	}
}

執行結果:

案例2:

定義一個方法,把陣列(1,2,3)按照指定格式拼接成一個字串,格式為:[word1#word2#word3]

package app_one;
import java.util.*;
public class hello {

	public static void main(String[] args) 
	{
		int []array = {1,2,3};
		String str = Array_To_String(array);
		System.out.println(str);
		
	}
	
	public static String Array_To_String(int []array)
	{
		String start_str = "[" ;
		for(int i = 0 ;i < array.length ; i++)
		{
			if(i == array.length -1)
				start_str += "word" + array[i]+"]";
			else
				start_str += "word" + array[i] +"#";
			
		}
		return start_str;
	}
}

執行結果:

參考資料:傳智播客Java視訊學習課程筆記