1. 程式人生 > 其它 >Java常用類:String

Java常用類:String

String

  • 字串是常量,建立之後不可改變,修改變數的賦值不是修改字串,而是將變數指向新建立的字串
  • 字串字面值存在字串池中,可以共享,JDK8後字串池在堆中
  • 建立字串變數:
    • String s = "H";產生一個物件,字串池中儲存
    • String s = new String("H");產生兩個物件,堆、池中各儲存一個。堆中儲存new的物件,指向字串池的字串,浪費空間
  • 在對字串進行比較時使用 equals(),String重寫了equals方法
String str = new String("H");
String str2 = new String("H");
System.out.println(str==str2);//false,比較的是物件的地址
System.out.println(str.equals(str2));//true,比較字串的內容

常用方法

  1. length():返回字串的長度
test.length()//10
  1. charAt(int index):返回某個位置的字元,下標越界會報錯
test.charAt(4)//是
  1. contains(String str):是否包含某個字串
test.contains("java")//true
  1. toCharArray():將字串轉換成陣列
Arrays.toString(test.toCharArray();//[j, a, v, a, 是, 最, 好, 的, 語, 言]
  1. indexOf(String str, n):(從索引n開始)查詢str首次出現的下標,存在返回下標,不存在返回-1
test.indexOf("java")//0
  1. LastIndexOf(String str, n):(從索引n開始)查詢str最後一次出現的下標,存在返回下標,不存在返回-1
test.lastIndexOf("b")//-1
  1. trim():去掉字串前後的空格
  2. toUpperCase():小寫轉大寫
  3. toLowerCase():大寫轉小寫
  4. endWith(String str):判斷字串是否以str結尾
  5. startWith(String str):判斷是否以str開頭
  6. replace(char oldChar, char newChar):將舊字串替換成新字串
test.replace("java","python")//python是最好的語言
  1. split(String str):根據str做拆分

    • spilt(" "):按照空格拆分
    • []表示選擇其中的內容,可以用 []中的其中一個內容進行拆分
    • +代表切分符號可以出現多個但只切分一次
String s = "java is the best programing language, php not";
String[] arr = s.split("[ ,]+");//[]表示選擇其中的內容,可以用空格或逗號拆分;+代表切分符號可以出現多個但只切分一次
for (String string : arr) {
    System.out.println(string);
}
//輸出
java
is
the
best
programing
language
php
not
  1. equals():比較字串的內容是否相同
  2. equalsIgnoreCase()忽略大小寫的比較
  3. compareTo():按照字典表的順序比較大小
String s3 = "xdfg";
String s4 = "asdzb";
System.out.println(s3.compareTo(s4));//23首字母的序號差值,正數則s3>s4

當進行比較的兩個字串的長度不同,但較短的字串的內容和較長的前部完全相同時,比較的是字串的長度

String s5 = "asd";
String s6 = "asdfg";
System.out.println(s5.compareTo(s6));//-2,返回值是字元的長度差,相等時為0
  1. substring(int beginIndex, int endIndex):切片

可變字串

  • StringBuffer:可變長字串,JDK1,執行效率慢,執行緒安全
  • StringBuilder:可邊長字串,JDK5,執行效率快,執行緒不安全
  • String的區別:
    • 效率更高
    • 節省記憶體

方法(StringBuffer和StringBuilder通用)

  1. append(內容):追加各種型別的內容
  2. insert(int offset, 內容):在指定索引處插入內容
  3. replace(int start, int end, 替換內容):在指定位置進行替換
  4. delete(int start, int end):刪除索引中的內容
  5. delete(0, str.length()):清空內容

效率驗證

public static void main(String[] args) {
    //開始時間
    long start = System.currentTimeMillis();

    //String 312
//    String string = "";
//    for (int i = 0; i < 9999; i++) {
//        string+=i;
//    }
//        System.out.println(string);

    //StringBuilder:3
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < 9999; i++) {
        sb.append(i);
    }
    System.out.println(sb.toString());
    long end = System.currentTimeMillis();
    System.out.println("用時:"+(end-start));
}