String 类的常用方法都有那些?

参考回答

String 类在 Java 中是最常用的类之一,它提供了许多常用的方法来处理字符串操作。以下是一些 常用方法

  1. 字符串获取相关
    • length():获取字符串的长度。
    • charAt(int index):获取指定位置的字符。
    • substring(int beginIndex):从指定位置开始截取字符串。
    • substring(int beginIndex, int endIndex):截取指定范围的字符串。
  2. 字符串比较相关
    • equals(Object obj):比较两个字符串内容是否相同。
    • equalsIgnoreCase(String anotherString):忽略大小写比较字符串是否相同。
    • compareTo(String anotherString):按字典顺序比较两个字符串。
    • compareToIgnoreCase(String anotherString):忽略大小写按字典顺序比较。
  3. 字符串查找相关
    • indexOf(String str):返回子字符串第一次出现的索引。
    • indexOf(String str, int fromIndex):从指定位置开始查找子字符串的索引。
    • lastIndexOf(String str):返回子字符串最后一次出现的索引。
    • contains(CharSequence s):判断是否包含某个子字符串。
    • startsWith(String prefix):判断字符串是否以指定前缀开头。
    • endsWith(String suffix):判断字符串是否以指定后缀结尾。
  4. 字符串修改相关
    • concat(String str):拼接字符串。
    • replace(char oldChar, char newChar):替换字符。
    • replace(CharSequence target, CharSequence replacement):替换字符串。
    • replaceAll(String regex, String replacement):用正则替换所有匹配的字符串。
    • replaceFirst(String regex, String replacement):用正则替换第一个匹配的字符串。
    • toUpperCase():将字符串转为大写。
    • toLowerCase():将字符串转为小写。
    • trim():去除字符串两端的空格。
  5. 字符串分割和拆分
    • split(String regex):根据正则表达式分割字符串。
    • split(String regex, int limit):根据正则表达式分割字符串,限制分割数量。
  6. 字符串判空相关
    • isEmpty():判断字符串是否为空(length() == 0)。
    • isBlank()(Java 11+):判断字符串是否为空白(包括空格、制表符等)。
  7. 转换相关
    • valueOf(Object obj):将其他类型转换为字符串。
    • toCharArray():将字符串转为字符数组。
    • getBytes():将字符串转为字节数组。

详细讲解与拓展

1. 字符串获取相关

  • length():获取字符串的长度。
  • charAt(int index):返回指定索引处的字符,索引从 0 开始。
  • substring(int beginIndex, int endIndex):截取指定范围的字符串,注意:索引是左闭右开

示例代码:

public class Main {
    public static void main(String[] args) {
        String str = "hello world";
        System.out.println("Length: " + str.length()); // 输出:11
        System.out.println("Char at index 1: " + str.charAt(1)); // 输出:e
        System.out.println("Substring: " + str.substring(0, 5)); // 输出:hello
    }
}

2. 字符串比较相关

  • equals(Object obj):比较字符串内容是否相同。

  • equalsIgnoreCase(String anotherString):忽略大小写比较字符串。

  • compareTo(String anotherString)
    

    :按字典顺序比较字符串,返回值:

    • 0:相等。
    • 正数:当前字符串大于参数字符串。
    • 负数:当前字符串小于参数字符串。

示例代码:

public class Main {
    public static void main(String[] args) {
        String str1 = "hello";
        String str2 = "Hello";

        System.out.println("Equals: " + str1.equals(str2)); // false
        System.out.println("Equals Ignore Case: " + str1.equalsIgnoreCase(str2)); // true
        System.out.println("Compare To: " + str1.compareTo(str2)); // 32 (h > H)
    }
}

3. 字符串查找相关

  • indexOf()lastIndexOf():查找子字符串的位置。
  • contains():判断字符串是否包含某个子字符串。
  • startsWith()endsWith():检查字符串的前缀和后缀。

示例代码:

public class Main {
    public static void main(String[] args) {
        String str = "hello world";

        System.out.println("Index Of: " + str.indexOf("world")); // 输出:6
        System.out.println("Contains: " + str.contains("hello")); // 输出:true
        System.out.println("Starts With: " + str.startsWith("hello")); // 输出:true
        System.out.println("Ends With: " + str.endsWith("world")); // 输出:true
    }
}

4. 字符串修改相关

  • concat():拼接字符串。
  • replace():替换字符或字符串。
  • toUpperCase()toLowerCase():字符串大小写转换。
  • trim():去除字符串首尾的空格。

示例代码:

public class Main {
    public static void main(String[] args) {
        String str = "  hello world  ";

        System.out.println("Concat: " + str.concat("!!!")); // 输出:  hello world  !!!
        System.out.println("Replace: " + str.replace("world", "Java")); // 输出:  hello Java  
        System.out.println("To Upper Case: " + str.toUpperCase()); // 输出:  HELLO WORLD  
        System.out.println("Trim: " + str.trim()); // 输出:hello world
    }
}

5. 字符串分割和拆分

  • split():按照正则表达式拆分字符串。
  • toCharArray():将字符串转为字符数组。

示例代码:

public class Main {
    public static void main(String[] args) {
        String str = "apple,banana,orange";

        String[] fruits = str.split(",");
        for (String fruit : fruits) {
            System.out.println(fruit);
        }

        char[] chars = str.toCharArray();
        for (char c : chars) {
            System.out.print(c + " "); // 输出:a p p l e , b a n a n a , o r a n g e
        }
    }
}

6. 字符串判空相关

  • isEmpty():判断字符串是否为空。
  • isBlank()(Java 11+):判断字符串是否为空白字符串。

示例代码:

public class Main {
    public static void main(String[] args) {
        String str1 = "";
        String str2 = "   ";

        System.out.println("Is Empty: " + str1.isEmpty()); // 输出:true
        System.out.println("Is Blank: " + str2.isBlank()); // 输出:true (Java 11+)
    }
}

拓展知识

  1. 字符串不可变性
    • 字符串一旦创建,内容不可变。对 String 的修改操作都会生成新的对象。
    • 适合存储常量、线程安全。
  2. 正则表达式与字符串操作
    • replaceAll()split() 等方法支持正则表达式,用于高效的字符串处理。
  3. 优化性能:StringBuilder
    • 如果需要频繁修改字符串,建议使用 StringBuilderStringBuffer 代替 String,以避免创建过多临时对象。

发表回复

后才能评论