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視訊學習課程筆記