1. 程式人生 > 其它 >Java字串基本用法

Java字串基本用法

技術標籤:Javajava

目錄

前言

在Java中,String類是字串操作類,提供了多種方法對字串進行操作;關於String類的基本操作,可分為以下幾類:

  1. 基本操作方法
  2. 字串比較
  3. 字串與其他資料型別之間的轉換
  4. 字元與字串的查詢
  5. 字串的替換與修改
  6. 字串的擷取與拆分

一、字串的建立

  1. String類位於Java的lang包下,所以在使用時不需要通過import引入(導包)
  2. String類是final類,不能被繼承,物件建立後不可修改,並且由0或多個字元組成,包含在一對雙引號之間
  3. String類其實是通過char陣列來儲存字串的,它值是不可變的

建立方式有3種:

第1種:在字串池裡直接建立

String str = "Hello Word";
String str2 = "Hello Word";
str2 = "Hello Word,welcome";

此時字串池裡已經有了Hello Word,當再定義String str2 = "Hello Word";時,str2不會再重新建立新字串,而是會指向原來的字串地址;當str2 = "Hello Word,welcome";時, str2會重新建立新字串Hello Word,welcome

並指向新的字串地址。

第2種:在堆中開闢空間建立並儲存

String str = new String("Hello Word");

這種方法在字串池中建立了Hello Word,還在堆中開闢了一片記憶體,用來儲存該字串在字串池裡的地址。

第3種:字元陣列轉換成字串

char[] char_ = {'H','e','l','l','o'};
String str = new String(char_ );

二、常用方法

1.String.valueOf()

功能:將指定型別轉換為字串

// int → String
String str = String.valueOf(123);

// double → String
String str = String.valueOf(1.23);

// boolean → String
String str = String.valueOf(true);

// char[] → String
char[] array = { 1, 2, 3 };
String str = String.valueOf(array);

2.String.format()

功能:按照指定的格式(%d-%s-%f)生成新字串

int i1 = 1, i2 = 2;
int sum = i1 + i2;

// 格式化輸出
System.out.printf("%d+%d=%d\n", i1, i2, sum);

// 格式化字串
String str = String.format("%d+%d=%d", i1, i2, sum);
System.out.println(str);

// 你好xx,歡迎來xx
String str2 = String.format("你好%s,歡迎來%s", "Blues", "杭州");
System.out.println(str2);

3.equals() 、equalsIgnoreCase() 和 ==

equals():基本資料型別沒有方法,引用資料型別(String)進行值(內容)的比較

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    String str1 = input.nextLine();
    String str2 = input.nextLine();
    System.out.println(str1 == str2);//返回 false

    //字串內容的比較
    boolean isEquals = str1.equals(str2);
    System.out.println(isEquals);
}

equalsIgnoreCase():比較字串內容是否一致,不區分大小寫

String str1 = "Hello";
String str2 = "hello";
System.out.println(str1.equalsIgnoreCase(str2));// 返回 true

==:基本資料型別進行值的比較,引用資料型別進行記憶體地址的比較

public static void main(String[] args) {
    // 基本資料型別
    int a = 1, b = 2;
    System.out.println(a == b);// 返回 false

    String str1 = "Hello";
    String str2 = "Hello";
    String str3 = new String("Hello");
    
    // 引用資料型別String
    System.out.println(str1 == str2);// 返回 true
    
    // 引用資料型別進行記憶體地址的比較
    System.out.println(str1 == str3);// 返回 false
}

4.charAt()

按照指定的索引位置,獲取對應位置的字元;下標位置不能越界

String str = "Hello";
System.out.println(str.charAt(0)); // 返回 H

5.toCharArray()

將字串轉換為字元陣列

String str = "你好世界";
char[] chars =  str.toCharArray();
System.out.println(chars[0]);// 你
System.out.println(chars[1]);// 好
System.out.println(chars[2]);// 世
System.out.println(chars[3]);// 界

6.split()

按照指定的字串,對原字串進行切割

String str = "你,好,世,界";
String[] strings = str.split(",");
Stream.of(strings).forEach(System.out::println);
String str = "你好,世界。歡迎,你。";
String[] strings = str.split("。");
String[] strings1 = strings[0].split(",");
String[] strings2 = strings[1].split(",");
strings = new String[4];
System.arraycopy(strings1, 0, strings, 0, 2);
System.arraycopy(strings2, 0, strings, 2, 2);
System.out.println(Arrays.toString(strings));

指定字串中如果包含特殊字元

String str = "127.0.0.1";
String[] strings = str.split("\\.");// 切割字串如果是特殊符號「正則表示式」,需加入`\\`進行轉義
Stream.of(strings).forEach(System.out::println);

7.compareTo()

比較兩個字串之間的大小

比較規則:
先比較兩個字串對應字元 ASCII碼(英文)或Unicode碼(中文)的"差", 如果比較的所有字元一致,再比較字串的長度“差”。

String str1 ="你";
String str2 ="好";
// 正數:字串1 > 字串 2
// 零:字串1 = 字串2
// 負數:字串1 < 字串2
System.out.println(str1.compareTo(str2));

8.contains()

判斷當前字串中是否包含指定子字串

public static void main(String[] args) {
    String str ="你好";
    System.out.println(str.contains("你"));
}

9.startsWith()

判斷當前字串是否以指定字串“開頭”

String str ="Hello, Word";
System.out.println(str.startsWith("Hello"));

判斷當前字串第x位是否以指定字串“開頭”(索引從0開始)

String str ="Hello, Word";
System.out.println(str.startsWith("e", 1));

10.endsWith()

判斷當前字串是否以指定字串“結尾”

String str ="Hello, Word";
System.out.println(str.endsWith("d"));

11.indexOf()

查詢字串的首次出現的位置(索引從0開始);如果找到,則返回該子字串的第一次出現的位置; 如果沒有找到,則返回負數

String str ="Hello, Word";
System.out.println(str.indexOf("e"));

從當前字串的指定開始位置查詢

String str = "Hello, Word";
System.out.println(str.indexOf("o", 5));

12.lastIndexOf()

查詢字串的最後一次出現的位置;如果找到,則返回該子字串的最後一次出現的位置; 如果沒有找到,則返回負數

String str = "Hello, Word";
System.out.println(str.lastIndexOf("o"));

從指定位置開始查詢指定字串的最後一次出現的位置

String str = "Hello, Word";
System.out.println(str.lastIndexOf("o", 5));

13.replace()

替換全部指定字串

String str = "Hello你好, Word你好";
System.out.println(str.replace("你好", ""));
String str = "Hello你好, Word你好";
System.out.println(str.replaceAll("你好", ""));

替換指定字串(第一個)

String str = "Hello你好, Word你好";
System.out.println(str.replaceFirst("你好", ""));

14.toUpperCase()

轉大寫

String str = "Hello, Word";
System.out.println(str.toUpperCase());

15.toLowerCase()

轉小寫

String str = "Hello, Word";
System.out.println(str.toLowerCase());

16.substring()

擷取子字串

String str = "f418f46077d8f4dd0e59146df843667.jpg";
// 擷取字尾名
System.out.println(str.substring(str.indexOf(".")));
// 擷取檔名
System.out.println(str.substring(0, str.indexOf(".")));
// 擷取指定區間
System.out.println(str.substring(1, 5));

17.String.join()

將字串陣列,按照指定字串進行連線

public static void main(String[] args) {
    String[] strings = {"你", "好", "世", "界"};
    String str = String.join("#", strings);
    System.out.println(str);
}

18.StringJoiner

進行字串的連線

public static void main(String[] args) {
    String[] strings = {"你", "好", "世", "界"};
    //用法1:
	// StringJoiner stringJoiner = new StringJoiner(","); // 只使用分隔符
    //用法2:
    StringJoiner stringJoiner = new StringJoiner(",", "{", "}"); // 分隔符,字首,字尾
    Stream.of(strings).forEach(str -> stringJoiner.add(str));
    System.out.println(stringJoiner.toString());
}