[Java初探04]__字串(String類)相關
-
前言
接下來將暫時將重心偏移向實際操作,不在將大量時間花費在詳細的知識點整理上,將會簡略知識總結筆記的記錄,加強實際練習的時間,例項練習篇也不再同步進行,我會將部分我覺得重要的原始碼更新在每節知識點後面,之後兩個系列將結合一起,縮短篇幅,精要內容.
字串時Java語言中經常處理的對像,我們會在各種地方遇到對字串的處理.在java語言中字串是作為String類的例項來處理的,是以物件的方式處理字串.
-
關於類,及類的例項化物件.
在前面的學習中我們瞭解到,在Java中,最基本的構造機制之一就是類,類中可以構造各種方法.而Java就是基於這條件下,通過各種定義好的類,方法.集合成標準類庫,以提供給我們使用,類和物件的思想也來自與現實社會結構,自然科學.在分類科學中,統計學等,都有應用,將世界的各種事物,有同種特性的歸為一類,比如鳥類,而當面前有一隻鳥,它正好屬於這個鳥類,那麼這隻鳥就是鳥類例項化的一個物件,Java語言,就是使用這種思想架構的.關於類及類的物件,在後面再進行深入學習.
涉及到的知識點:
- 字串的建立
- 連線字串
- 獲取字串資訊
- 字串操作
- 格式化字串
這裡關於字串的格式化,我另寫了一個外篇專門來歸納總結了一下.
-
字串的宣告建立
我們知道了字串的建立,就是使用String類的構造方法.
那麼我們看一下String類中的Structure(結構體),並找到一系列的String()建構函式.
這下我們知道了,String的構造方法是有多少,除了最簡單的String()方法,還提供了各種通過不同資料類的陣列構建String物件的方法.
public void sty_createString(){ String astr= "hello"; // 引用字串常量建立一個字串變數. char a[] = {'a','b','c'};// 字元陣列 byte b[] = {2,54,23,12};// byte型陣列 /** * String(char[])構造方法,將字元陣列所有的值連線起來建立一個字串物件. * */ String s=new String(a); /** *String(char[],int offset,int length)方法 *抽取字元陣列中的一段字元建立字串物件.offset 表示開始擷取的位置. */ String astr3 = new String(a,1,2); String astr4 = new String(b); String astr5 = new String(b,3,2); }
其中兩個int型引數,分別定義了擷取陣列的開始位置和擷取長度.
-
字串的連線
字串的連線十分簡單,在Java語言中,直接使用+就可以連線兩個不同的字串,或者將一個字串與其他型別的變數連線,其輸出結果將呼叫String類的toString方法,將格式轉換為字串輸出.
String str1,str2; int a=45; str1="dfgg"+"adf"; str2="asd"; String str3 = str1+str2; System.ou.println("字元連線"+a);
-
獲取字串資訊
- 獲取字串長度:String()類的length()方法可以獲取字串長度.
// 獲取字串長度.length()方法 System.out.println("主字串的長度是"+mstr.length());
-
字串查詢:
String類中的indexOf()與lastindexOf()方法都可以搜尋字串中的指定條件的字元和字串.
indexOf()方法,返回字元第一次出現的位置,lastindexOf()方法返回字元最後一次出現的位置.當他們沒有檢索到字串時,將返回-1.
兩個方法的引數都為檢索字串.
// 檢索字串 ,indexOf()方法,lastIndex()方法 int fint = mstr.indexOf(Instr); // 呼叫檢索字串引數instr. int lint = mstr.lastIndexOf(Instr); System.out.println(Instr+"字元(串)首次出現的位置是:"+fint); System.out.println(Instr+"字元(串)最後出現的位置是:"+lint);
-
獲取指定位置的字元
String類下的charAt()方法,其引數為int型,表示指定位置的下標,通過下表找到相對應的字元.
//獲取指定位置的字元,charAt()方法 char setchar = mstr.charAt(aint); System.out.println(aint+"位置的字元是:"+setchar);
- 字串操作
- 獲取子字串
substring()方法,按下標擷取字串,過載有兩種方法,表示兩種不同的擷取方式.
String cstr = mstr.substring(3); // substring(int beginindex),傳一個int型引數,表示從引數開始擷取到結尾. String cstr2 = mstr.substring(3,6); // substring(int beginindex,int endindex)兩個引數,表示擷取兩個引數之間的字串. System.out.println("從第3開始獲取子字串"+cstr); System.out.println("擷取3到6字串"+cstr2);
-
去除首尾空格
trim()方法為我們提供了去除首位空格的方法,這個方法應當是用在儲存資訊時去除首尾無意義的多餘空格,減少空間佔用.
//去除空格,trim()方法可以直接返回字串的副本,忽略前導和尾部空格.通常用於儲存資訊時,去除首尾無意義的空格. String vstr = mstr.trim(); System.out.println("去除首位空格的字串副本:"+vstr);
-
字串替換
replace()方法給我們提供了字元(轉換)的方法,可以將一個新的字元(串)替換掉一個就的字串,這在一般的文字編輯中時常用到.
//字串替換,replace()方法可以實現將指定字元或字串替換成新的字串.replace(char oldchar,char newchar) String nstr= mstr.replace('a','b'); String nstr2 = mstr.replace("str","asr"); System.out.println("替換後的字串"+nstr); System.out.println("替換後的字串"+nstr2);
-
比較兩個字串是否相等
equals()方法給我們提供了比較兩個字串是否相同的方法,我們知道,兩個字串的比較不能單純的使用==,這是因為比較運算子比較的是兩個字串的地址是否相同,即使兩者的內容相同,兩者的記憶體地址也是不同的,使用比較運算子無法比較兩個字串之間的關係.
所以需要使用到equals方法.
//判斷字串是否相等,equals()方法用於比較兩個字串是否相等. System.out.println("字串是否和abc相等:"+mstr.equals("abc"));
-
判斷字串的開始和結尾
startsWith(),endsWith()方法可以判斷字串是否按照引數開始或結尾,這常用與字串的校驗.
//判斷字串的開始結尾 startsWith(),endsWith()方法分別判斷字串是否以指定的形式結束.返回值為布林型別. System.out.println("字串是否以a開始:"+mstr.startsWith("a")); System.out.println("字串是否以.結束:"+mstr.endsWith("."));
-
按字典順序比較兩個字串
compareTo()方法為按字典排序比較兩個字串,比較是其unicode值.將兩個String物件表示的字元序列與引數字串所表示的字串序列進行比較.按字元序列,如果String物件在引數字元序列的前面,返回一個負值,在後面返回一個正值,如果相等,則返回0.
System.out.println("與字串hyz按字典排序相比較"+mstr.compareTo("hyz"));
-
字串大小寫轉換
toLowerCase(),toUpperCase()方法.前者將字串所有字元大寫改為小寫,後者從小寫改為大寫.
System.out.println("字串全轉為小寫:"+mstr.toLowerCase()); System.out.println("字串全轉為大寫:"+mstr.toUpperCase());
-
字串分割
split()方法,過載有兩種不同的分割方式,split(String regex)引數為指定的分割符,,split(String regex,int limit),後一個引數是指定分割次數,從前往後.字串分割會將字串儲存在一個字串數組裡.列印需要遍歷它.
String[] regexmstr = mstr.split("e"); String[] regexmstr2 = mstr.split("e",3); for (String a: regexmstr){// 對字串陣列遍歷列印. System.out.print("["+a+"]"); } System.out.println(); // 換行 for (String a:regexmstr2){ System.out.print("["+a+"]"); }
- 原始碼
package day_4_3; import java.util.Scanner; /** * @outhor xiaoshe * @date 2019/4/3- @time 18:29 * 字串的學習 */ public class Sty_String { public static void main(String[] args) { Sty_String styString = new Sty_String(); styString.sty_createString(); Scanner scanner = new Scanner(System.in); System.out.println("輸入主字串:"); String mstr = scanner.nextLine(); System.out.println("輸入需要查詢的字元(或字串):"); String instr = scanner.next(); System.out.println("輸入指定字元的位置:"); int aint = scanner.nextInt(); styString.Sty_getStringInfo(mstr,instr,aint); styString.sty_setString(mstr); } /** * String類中的兩種構造字串的方法. */ public void sty_createString(){ String astr= "hello"; // 引用字串常量建立一個字串變數. char a[] = {'a','b','c'};// 字元陣列 byte b[] = {2,54,23,12};// byte型陣列 /** * String(char[])構造方法,將字元陣列所有的值連線起來建立一個字串物件. * */ String s=new String(a); /** *String(char a[],int offset,int length)方法 *抽取字元陣列中的一段字元建立字串物件.offset 開始擷取的位置. */ String astr3 = new String(a,0,2); String astr4 = new String(b); String astr5 = new String(b,0,2); System.out.println(astr+"\n"+astr3+"\n"+astr4+"\n"+astr5); } /** * 獲取字串資訊 */ public void Sty_getStringInfo(String mstr ,String Instr,int aint){ // 獲取字串長度.length()方法 System.out.println("主字串的長度是"+mstr.length()); // 檢索字串 ,indexOf()方法,lastIndex()方法 int fint = mstr.indexOf(Instr); int lint = mstr.lastIndexOf(Instr); System.out.println(Instr+"字元(串)首次出現的位置是:"+fint); System.out.println(Instr+"字元(串)最後出現的位置是:"+lint); //獲取指定位置的字元,charAt()方法 char setchar = mstr.charAt(aint); System.out.println(aint+"位置的字元是:"+setchar); } /** * 字串操作 */ public void sty_setString(String mstr){ /** * 獲取子字串 substring()方法,按下標值擷取子字串,下標是由0開始的. * substring()方法有兩種不同的過載方法,分別代表兩種不同的擷取方式. */ String cstr = mstr.substring(3); // substring(int beginindex),傳一個int型引數,表示從引數開始擷取到結尾. String cstr2 = mstr.substring(3,6); // substring(int beginindex,int endindex)兩個引數,表示擷取兩個引數之間的字串. System.out.println("從第3開始獲取子字串"+cstr); System.out.println("擷取3到6字串"+cstr2); //去除空格,trim()方法可以直接返回字串的副本,忽略前導和尾部空格.通常用於儲存資訊時,去除首尾無意義的空格. String vstr = mstr.trim(); System.out.println("去除首位空格的字串副本:"+vstr); //字串替換,replace()方法可以實現將指定字元或字串替換成新的字串.replace(char oldchar,char newchar) String nstr= mstr.replace('a','b'); String nstr2 = mstr.replace("str","asr"); System.out.println("替換後的字串"+nstr); System.out.println("替換後的字串"+nstr2); //判斷字串是否相等,equals()方法用於比較兩個字串是否相等. System.out.println("字串是否和abc相等:"+mstr.equals("abc")); //判斷字串的開始結尾 startsWith(),endsWith()方法分別判斷字串是否以指定的形式結束.返回值為布林型別. System.out.println("字串是否以a開始:"+mstr.startsWith("a")); System.out.println("字串是否以.結束:"+mstr.endsWith(".")); /** * 按字典順序比較兩個字串,compareTo()方法為按字典排序比較兩個字串,比較是其unicode值. * 將兩個String物件表示的字元序列與引數字串所表示的字串序列進行比較. * 按字元序列,如果String物件在引數字元序列的前面,返回一個負值,在後面返回一個正值,如果相等,則返回0 */ System.out.println("與字串hyz按字典排序相比較"+mstr.compareTo("hyz")); //字母大小寫轉換,toLowerCase(),toUpperCase()方法.前者將字串所有字元大寫改為小寫,後者從小寫改為大寫. System.out.println("字串全轉為小寫:"+mstr.toLowerCase()); System.out.println("字串全轉為大寫:"+mstr.toUpperCase()); //字串分割split()方法,過載有兩種不同的分割方式,split(String regex)引數為指定的分割符, String[] regexmstr = mstr.split("e"); String[] regexmstr2 = mstr.split("e",3); for (String a: regexmstr){// 對字串陣列遍歷列印. System.out.print("["+a+"]"); } System.out.println(); // 換行 for (String a:regexmstr2){ System.out.print("["+a+"]"); } } }
關於String類,就先學習到這些基礎和常用的方法了.關於String類的其他眾多的方法,我們可以直接檢視String類通過structure(結構體)視窗,進行了解.
完
更新時間:
2019-4-4
1:31