杰瑞科技汇

Java字符串常用方法有哪些?

创建和初始化

虽然这不是 String 的方法,但了解如何创建字符串是基础。

Java字符串常用方法有哪些?-图1
(图片来源网络,侵删)
  1. 直接赋值(最常用)

    • JVM 会在字符串常量池中查找,如果存在则直接引用,不存在则创建。
    • 示例:String str = "Hello, World!";
  2. 使用 new 关键字

    • 每次都会在堆内存中创建一个新的 String 对象,即使内容相同。
    • 示例:String str = new String("Hello, World!");

获取基本信息

这些方法用于获取字符串的基本属性。

方法 描述 示例
length() 返回字符串的长度(字符数)。 "abc".length() 返回 3
isEmpty() 如果字符串长度为 0,则返回 true,否则返回 false "".isEmpty() 返回 true
charAt(int index) 返回指定索引处的字符,索引从 0 开始。 "abc".charAt(1) 返回 'b'
codePointAt(int index) 返回指定索引处的字符的 Unicode 码点。 "a".codePointAt(0) 返回 97

查找和搜索

这些方法用于在字符串中查找子串或字符。

Java字符串常用方法有哪些?-图2
(图片来源网络,侵删)
方法 描述 示例
contains(CharSequence s) 判断字符串是否包含指定的字符序列。 "Hello".contains("ell") 返回 true
indexOf(String str) 返回子字符串第一次出现的索引,如果找不到,返回 -1 "Hello".indexOf("l") 返回 2
lastIndexOf(String str) 返回子字符串最后一次出现的索引,如果找不到,返回 -1 "Hello".lastIndexOf("l") 返回 3
startsWith(String prefix) 判断字符串是否以指定的前缀开头。 "Hello".startsWith("He") 返回 true
endsWith(String suffix) 判断字符串是否以指定的后缀结尾。 "Hello".endsWith("lo") 返回 true
substring(int beginIndex) 返回从 beginIndex 开始到结尾的子字符串。 "Hello".substring(1) 返回 "ello"
substring(int beginIndex, int endIndex) 返回从 beginIndex 开始到 endIndex (不包含) 的子字符串。 "Hello".substring(1, 3) 返回 "el"

比较

这些方法用于比较两个字符串的内容。

方法 描述 示例
equals(Object anObject) 精确比较:比较两个字符串的内容是否完全相同(区分大小写)。 "abc".equals("ABC") 返回 false
equalsIgnoreCase(String anotherString) 忽略大小写比较:比较两个字符串的内容是否相同(不区分大小写)。 "abc".equalsIgnoreCase("ABC") 返回 true
compareTo(String anotherString) 字典序比较:按字典顺序比较两个字符串,返回一个整数值:
- 0:相等
- < 0:当前字符串小于参数字符串
- > 0:当前字符串大于参数字符串
"apple".compareTo("banana") 返回负数
compareToIgnoreCase(String str) 忽略大小写的字典序比较 "Apple".compareToIgnoreCase("apple") 返回 0

修改和转换

这些方法用于创建修改后的新字符串(String 对象是不可变的,这些方法都会返回新的对象)。

方法 描述 示例
concat(String str) 将指定的字符串连接到当前字符串的末尾。 "Hello".concat(" World!") 返回 "Hello World!"
toUpperCase() 将字符串中的所有字符转换为大写。 "hello".toUpperCase() 返回 "HELLO"
toLowerCase() 将字符串中的所有字符转换为小写。 "HELLO".toLowerCase() 返回 "hello"
trim() 去除字符串两端的空白字符(空格、制表符、换行等)。 " hello ".trim() 返回 "hello"
replace(char oldChar, char newChar) 用新的字符替换所有旧的字符。 "hello".replace('l', 'p') 返回 "heppo"
replace(CharSequence target, CharSequence replacement) 用新的字符序列替换所有旧的字符序列。 "hello world".replace("world", "java") 返回 "hello java"
replaceAll(String regex, String replacement) 正则表达式替换:用新的字符串替换所有匹配正则表达式的子串。 "123abc".replaceAll("\\d", "#") 返回 "###abc"
replaceFirst(String regex, String replacement) 正则表达式替换:用新的字符串替换第一个匹配正则表达式的子串。 "123abc".replaceFirst("\\d", "#") 返回 "#23abc"
split(String regex) 正则表达式分割:根据正则表达式将字符串分割成字符串数组。 "a,b,c".split(",") 返回 ["a", "b", "c"]

格式化

String.format() 方法可以像 printf 一样格式化字符串,非常强大。

方法 描述 示例
static String format(String format, Object... args) 使用指定的格式字符串和参数返回一个格式化的字符串。 String.format("Name: %s, Age: %d, Score: %.2f", "Alice", 30, 95.6) 返回 "Name: Alice, Age: 30, Score: 95.60"

常用格式说明符:

Java字符串常用方法有哪些?-图3
(图片来源网络,侵删)
  • %s: 字符串
  • %d: 十进制整数
  • %f: 浮点数
  • %.2f: 保留两位小数的浮点数
  • %c: 字符
  • %b: 布尔值

其他重要方法

方法 描述 示例
toCharArray() 将字符串转换为一个新的字符数组。 "abc".toCharArray() 返回 ['a', 'b', 'c']
getBytes() 将字符串转换为字节数组(使用平台默认的字符集)。 "你好".getBytes()
getBytes(String charsetName) 使用指定的字符集将字符串转换为字节数组。 "你好".getBytes("UTF-8")
valueOf() 静态方法,将各种数据类型(如 int, double, Object 等)转换为字符串。 String.valueOf(123) 返回 "123"

不可变性与性能提示

  1. 不可变性

    • String 对象在创建后其内容是不可改变的,任何修改字符串的操作(如 replace, toUpperCase, concat 等)都不会改变原始字符串,而是返回一个新的 String 对象。
    • 示例:
      String s1 = "hello";
      String s2 = s1.toUpperCase(); // s1 仍然是 "hello",s2 是 "HELLO"
  2. StringBuilder

    • 在循环中频繁使用 连接字符串会导致性能问题,因为每次 操作都会创建一个新的 String 对象,产生大量不必要的内存开销。
    • 推荐做法:在循环或需要大量拼接字符串的场景下,使用 StringBuilderStringBuffer
    • StringBuilder 是非线程安全的,性能更高。
    • StringBuffer 是线程安全的,性能稍低。

    性能对比示例:

    // 不推荐:在循环中使用 +
    String result = "";
    for (int i = 0; i < 1000; i++) {
        result = result + i; // 每次循环都创建新对象
    }
    // 推荐:使用 StringBuilder
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < 1000; i++) {
        sb.append(i); // 在原有对象上进行修改,效率高
    }
    String result = sb.toString();
功能类别 核心方法
获取信息 length(), isEmpty(), charAt()
查找搜索 contains(), indexOf(), substring()
比较判断 equals(), equalsIgnoreCase(), compareTo()
大小写转换 toUpperCase(), toLowerCase()
去除/替换 trim(), replace(), replaceAll()
拼接/分割 concat(), split()
格式化 String.format()
转换 toCharArray(), valueOf()

掌握这些常用方法是进行 Java 字符串操作的基础。String 的不可变性,并在需要时选择高效的 StringBuilder 来优化性能。

分享:
扫描分享到社交APP
上一篇
下一篇