字符串概述與特點
java.lang.String類 代表字符串
API當中說:Java程序中的所有字符串字面值(如“abc“)都作為此類的實例實現。
其實就是說:程序當中所用的雙引號字符串,都是String類的對象。(就算沒有new,也照樣是。)
字符串的特點
- 字符串的內容永遠不可改變。【重點】
- 正是因為字符串不可改變,所以字符串是可以共享使用的。
- 字符串效果上相當於是char[]字符數組,但是底層原理byte[]字節數組
創建字符串的常見3+1種方式
三種構造方法:
public String():
創建一個空白字符串,不含有任何內容。 String str = new String(); public String(char[] array):
根據字符數組的內容,來對應的字符串。 char[] charArray = {'A','B','C'}; String str = new String(charArray); public String(byte[] array):
根據字節數組的內容,來對應的字符串。 byte[] byteArray = {33,55,77}; String str = new String(byteArray)
一種直接創建:
String str = "CaiNiap";//右邊直接用雙引號
注意:直接寫上雙引號,就是字符串對象。
字符串常量池
程序當中直接寫上的雙引號字符串,就在字符串常量池中。
對於基本類型來說,== 是進行數值的比較
對於引用類型來說,== 是進行【地址值】的比較。
注意:雙引號直接寫的字符串在常量當中,new的不在池當中
字符串的比較
== 是進行對象的地址值比較,如果確實需要字符串的內容比較,可以使用兩方法。
public boolean equals(Object obj):
參數可以是任何對象,只有參數是一個字符串並且內容相同的才會給true,否則返回false
備注:任何對象都能用Object進行接收。
如果比較雙方一個常量一個變量,推薦把常量字符串寫在前面。
推薦:”abc“.equals(str)
不推薦:str.equals("abc")
String當中與獲取相關的常用方法有
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),包含左邊,不包含右邊。 String 當中與轉換相關的常用方法有: public char[] toCharArray(); 將當前字符串拆分成為字符串數組作為返回值。 public byte[] getBytes(); 獲取當前字符串底層的字節數組 public String replace(CharSequence oldString,CharSequence newString); 將所有出現的老字符串替換為新的字符串,返回替換后的結果新字符串。
字符串的分割
分割字符串的方法;
public String[] split(String regex): 按照參數的規則,將字符串切分成為若干部分。
注意事項:
- split方法的參數其實是一個“正則表達式”
- 注意:如果按照英文句點,"."進行切分,必須寫"\\."(兩個反斜杠)
例子
定義一個方法:把數組{1,2,3}按照指定的格式拼接成一個字符串。格式參照如下:[word1#word2#word3#].
分析:
1.首先准備一個int[]數組,內容是:1,2,3
2.定義一個方法,用來將數組變成字符串
三要素:
返回值類型:String
方法名稱:fromArrayToString
參數列表:int[]
3.格式:[word1#word2#word3#]
用到:for循環、字符串拼接、每個數組元素之前都有一個word字樣、分隔使用的是#、分區下一個是不是最后一個
4.調用方法,得到返回值,並打印結果字符串
public class CaiNiao{ public static void main(String[] args){ int[] array = {1,2,3}; String result = fromArrayToString(array); System.out.println(result); } public static String fromArrayToString(int[] array){ String str = "["; for(int i = 0;i<array.length;i++){ if (i==array.length-1){ str +="word" + array[i] +"]"; }else{ str += "world" + array[i] + "#"; } } return str; } }
例子:
題目:
鍵盤輸入一個字符串,並且統計其中各種字符出現的次數。
種類有:大寫字母、小寫字母、數字、其他
思路:
1.既然用到鍵盤輸入,肯定是Scanner
2.鍵盤輸入的是字符串,那么:String str =sc.next();
3.定義四個變量。分別代表四種字符各自出現的次數 。
4.需要對字符串一個字、一個字的檢查,String -->char[],方法就是toCharArray()
5.遍歷char[]字符數組,對當前字符種類進行判斷,並且用四個變量進行++動作。
6.打印輸出四個變量,分別代表四種字符出現的次數。
import java.util.Scanner; public class CaiNiao{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("請輸入一個字符串: "); String input = sc.next(); //獲取鍵盤輸入的一個字符串 int countUpper = 0;//大寫字母 int countLower = 0;//小寫字母 int countNumber = 0;//數字 int countOther= 0;//其他字符 char[] charArray = input.toCharArray(); for (int i = 0;i<charArray.length;i++){ char ch = charArray[i];//當前單個字符 if('A' <= ch&&ch <='Z'){ countUpper++; }else if ('a' <= ch && ch <='z'}{ countLower++; }else if ('0' <= ch && ch <= '9'){ countNumber++; }else{ countOther++; } }
System.out.println("大寫字母有:" + countUpper); System.out.println("小寫字母有:" + countLower); System.out.println("數字有:" + countNumber); System.out.println("其他字符有:" + countOther); }
}