1. 程式人生 > 實用技巧 >java常用類:String類/可變字串

java常用類:String類/可變字串

String類

  • 字串時常量,建立後不可改變

    常量儲存在字串池中,當新值賦給字串時,沒有修改資料,而是重新開闢一個空間,之前的值就變成了垃圾

  • 字串字面值儲存在字串池中,可以共享

    每當建立字串常量時,會首先檢查字串池,如果該字串已經存在,那麼就直接返回字串池中的例項引用。

  • 字串賦值方式:

    1. String s = "Hello";產生一個物件,字串池中儲存

    2. String s = new String("Hello"); 產生兩個物件,堆、池各一個

常用方法

  • public int length():返回字串長度

  • public char charAt(int index):根據下標獲取字元

  • public boolean contains(String str):判斷當前字串中是否包含str

  • public char[] toCharArray():將字串轉換成陣列

  • public int indexOf(String str):查詢str首次出現的下標,存在,則返回該下標;不存在,則返回-1

    int indexOf(String str, int fromIndex) 返回在此字串中第一次出現指定字元處的索引,從指定的索引開始搜尋。

  • public int lastIndexOf(String str):查詢str在當前字串最後一次出現的下標索引

  • public String trim():去掉字串前後的空格

  • public String toUpperCase():將小寫轉成大寫;

    public String toLowerCase():將大寫轉成小寫

  • public boolean endWith(String str):判斷字串是否以str結尾

    public boolean startsWith(String str):判斷字串是否以str字首開始

  • public String replace(char oldChar, char newChar):將舊字串替換成新字串

  • public String[] split(String str):根據給定正則表示式的匹配拆分此字串

  • boolean equals(Object anObject) 將此字串與指定的物件比較。

    boolean equalsIgnoreCase(String anotherString)將此 String 與另一個 String 比較,不考慮大小寫。

  • int compareTo(String anotherString) :按字典順序比較兩個字串。

    • 它是先比較對應字元的大小(ASCII碼順序),如果第一個字元和引數的第一個字元不等,結束比較,返回他們之間的差值,如果第一個字元和引數的第一個字元相等,則以第二個字元和引數的第二個字元做比較,以此類推,直至比較的字元或被比較的字元有一方結束。
    • 字元相同時比較長度 返回差值

案例演示

  • 需求:

    已知String str = "this is a text";

    1. 將str中的單詞單獨獲取
    2. 將str中的text替換成practice
    3. 在text前面插入一個easy
    4. 將每個單詞的首字母改為大寫
public class Demo01 {
    public static void main(String[] args){
        String str="this is a text";
        //1
        System.out.println("==========將str中的單詞單獨獲取==========");
        String[] arr=str.split(" ");
        for (String s:arr)
            System.out.println(s);
        //2
        System.out.println("==========將str中的text替換成practice==========");
        String str2=str.replace("text","practice");
        System.out.println(str2);
        //3
        System.out.println("==========在text前面插入一個easy==========");
        String str3=str.replace("text","easy text");
        System.out.println(str3);
        //4
        System.out.println("==========將每個單詞的首字母改為大寫==========");
        for (int i=0;i<arr.length;i++){
            //把第一個字元轉成大寫
            char upperfirst = Character.toUpperCase(arr[i].charAt(0));
            String news = upperfirst + arr[i].substring(1);
            System.out.println(news);
        }
    }
}

this
is
a
text
==========將str中的text替換成practice==========
this is a practice
==========在text前面插入一個easy==========
this is a easy text
==========將每個單詞的首字母改為大寫==========
This
Is
A
Text


可變字串

  • StringBuffer: 可變長字串,jdk1.0提供,執行效率慢,執行緒安全

  • StringBuilder:可變長字串,jdk5.0提供,執行效率快,執行緒不安全

  • 比String效率高

    比String節省記憶體

public class Demo01 {
    public static void main(String[] args){
        //StringBuffer sb=new StringBuffer();
        StringBuilder sb=new StringBuilder();
        //1.append();追加
        sb.append("java");
        System.out.println(sb.toString());
        sb.append("是最好的語言");
        System.out.println(sb.toString());
        //2.insert();新增
        sb.insert(0,"我在最前面,");
        System.out.println(sb.toString());
        //3,replace();替換
        sb.replace(0,5,"hello");
        System.out.println(sb.toString());
        //4.delete();刪除
        sb.delete(0,6);
        System.out.println(sb.toString());
    }
}
//結果:
//java
//java是最好的語言
//我在最前面,java是最好的語言
//hello,java是最好的語言
//java是最好的語言