Java學習:字符串概述與特點


字符串概述與特點

java.lang.String類 代表字符串

API當中說:Java程序中的所有字符串字面值(如“abc“)都作為此類的實例實現。
其實就是說:程序當中所用的雙引號字符串,都是String類的對象。(就算沒有new,也照樣是。)

字符串的特點

  1. 字符串的內容永遠不可改變。【重點】
  2. 正是因為字符串不可改變,所以字符串是可以共享使用的。
  3. 字符串效果上相當於是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); }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM