Java——String
- 软件开发
- 2025-09-20 11:06:02

在 Java 中,String 类是用于表示不可变字符序列的核心类,提供了丰富的 API 用于操作字符串。以下是 String 类的关键特性和常用方法详解:
一、String 的核心特性
不可变性(Immutable)
一旦创建,字符串内容不可修改。所有修改操作(如拼接、替换)都会生成新字符串。优势:线程安全、缓存哈希值、复用字符串常量池。示例:String s1 = "Hello"; String s2 = s1.concat(" World"); // s1 不变,s2 是新对象 "Hello World"字符串常量池(String Pool)
直接使用双引号创建的字符串会被存入常量池,重复的字符串字面量会复用对象。new String("...") 会强制在堆中创建新对象,即使内容相同。示例:String a = "Java"; // 常量池中的对象 String b = "Java"; // 复用常量池的对象(a == b 为 true) String c = new String("Java"); // 堆中新对象(a == c 为 false)二、String 的构造方法 构造方法描述String()创建空字符串对象String(String original)基于现有字符串创建新对象(内容相同,但对象不同)String(char[] value)通过字符数组创建字符串String(byte[] bytes, Charset charset)通过字节数组和指定编码创建字符串String(StringBuffer buffer)通过 StringBuffer 创建字符串String(StringBuilder builder)通过 StringBuilder 创建字符串 示例: char[] chars = {'H', 'e', 'l', 'l', 'o'}; String s1 = new String(chars); // "Hello" byte[] bytes = {72, 101, 108, 108, 111}; String s2 = new String(bytes, StandardCharsets.UTF_8); // "Hello"
三、String 的常用 API 1. 字符串基本信息 方法描述示例int length()返回字符串长度"Java".length() → 4boolean isEmpty()判断字符串是否为空(长度为0)"".isEmpty() → trueboolean isBlank()判断字符串是否全为空白(Java 11+)" ".isBlank() → true
2. 字符串操作 方法描述示例String concat(String str)拼接字符串,返回新字符串"Hello".concat("!") → “Hello!”String substring(int beginIndex)截取从 beginIndex 到末尾的子串"Java".substring(1) → “ava”String substring(int begin, int end)截取 [begin, end) 的子串"Java".substring(1, 3) → “av”String replace(char old, char new)替换所有匹配字符"Java".replace('a', 'o') → “Jovo”String replaceAll(String regex, String replacement)使用正则替换所有匹配的子串"a1b2".replaceAll("\\d", "-") → “a-b-”String[] split(String regex)按正则分割字符串为数组"a,b,c".split(",") → [“a”, “b”, “c”]String toLowerCase()转为小写"JAVA".toLowerCase() → “java”String toUpperCase()转为大写"java".toUpperCase() → “JAVA”String trim()去除首尾空白符(ASCII空格、制表符等)" Java ".trim() → “Java”String strip()去除首尾空白符(支持全角空格,Java 11+)" Java ".strip() → “Java”
3. 字符串比较 方法描述示例boolean equals(Object obj)比较内容是否相等(区分大小写)"Java".equals("java") → falseboolean equalsIgnoreCase(String str)比较内容是否相等(不区分大小写)"Java".equalsIgnoreCase("JAVA") → trueint compareTo(String str)按字典序比较大小(返回负数、0、正数)"a" pareTo("b") → -1int compareToIgnoreCase(String str)按字典序比较大小(忽略大小写)"A" pareToIgnoreCase("a") → 0
4. 字符串查找 方法描述示例boolean contains(CharSequence s)是否包含指定子串"Java".contains("av") → trueint indexOf(int ch)返回字符首次出现的索引(未找到返回-1)"Java".indexOf('a') → 1int indexOf(String str)返回子串首次出现的索引"Java".indexOf("va") → 2int lastIndexOf(int ch)返回字符最后一次出现的索引"Java".lastIndexOf('a') → 3boolean startsWith(String prefix)是否以指定前缀开头"Java".startsWith("Ja") → trueboolean endsWith(String suffix)是否以指定后缀结尾"Java".endsWith("va") → false
5. 类型转换 方法描述示例char[] toCharArray()转为字符数组"Java".toCharArray() → [‘J’,‘a’,‘v’,‘a’]byte[] getBytes()转为默认编码的字节数组"Java".getBytes() → [74, 97, 118, 97]byte[] getBytes(Charset charset)转为指定编码的字节数组"Java".getBytes(StandardCharsets.UTF_8)static String valueOf(Object obj)将对象转为字符串(调用 obj.toString())String.valueOf(123) → “123”
四、注意事项
字符串比较必须用 equals,而非 ==
String s1 = new String("Java"); String s2 = new String("Java"); System.out.println(s1 == s2); // false(比较对象地址) System.out.println(s1.equals(s2)); // true(比较内容)避免频繁拼接字符串 使用 + 或 concat 拼接字符串会生成大量中间对象,应改用 StringBuilder:
StringBuilder sb = new StringBuilder(); sb.append("Hello").append(" ").append("World"); String result = sb.toString(); // "Hello World"处理空指针(Null Safety) 在调用字符串方法前检查是否为 null:
String str = null; if (str != null && !str.isEmpty()) { // 安全操作 }五、示例代码 public class StringDemo { public static void main(String[] args) { String s = " Hello, Java! "; // 基本操作 System.out.println(s.trim()); // "Hello, Java!" System.out.println(s.substring(7)); // "Java! " System.out.println(s.replace("Java", "World")); // " Hello, World! " // 比较 System.out.println("java".equalsIgnoreCase("JAVA")); // true // 分割与拼接 String[] parts = "a,b,c".split(","); String joined = String.join("-", parts); // "a-b-c" System.out.println(joined); } }
六、Java 11+ 新增方法 方法描述示例String repeat(int n)重复字符串 n 次"a".repeat(3) → “aaa”String stripLeading()去除头部空白符(支持全角空格)" Java".stripLeading() → “Java”String stripTrailing()去除尾部空白符(支持全角空格)"Java ".stripTrailing() → “Java”boolean isBlank()判断是否全为空白符(包括全角空格)" ".isBlank() → true
掌握这些 API 能高效处理字符串操作,注意合理选择方法以优化性能!
Java——String由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Java——String”