Java String 类详解

String 是 Java 中最常用的类之一,用于表示和操作字符串。字符串在 Java 中是不可变的(immutable),这意味着一旦创建,其内容就不能被修改。

一、创建字符串
  1. 字面量创建(推荐)
String str1 = "Hello World";

这种方式会检查字符串常量池,避免重复创建。

  1. 构造函数创建
String str2 = new String("Hello Java");

每次都会在堆内存创建新对象。

二、字符串操作
  1. 长度获取
int len = str1.length(); // 返回 11

  1. 字符串连接
String result = str1.concat("!"); // "Hello World!"
String combined = str1 + " " + str2; // 使用 + 运算符

  1. 格式化字符串
String formatted = String.format("Name: %s, Age: %d", "Alice", 30);

三、常用方法
  1. 字符访问
char ch = str1.charAt(0); // 'H'

  1. 子字符串
String sub = str1.substring(6); // "World"
String subRange = str1.substring(0, 5); // "Hello"

  1. 大小写转换
String upper = str1.toUpperCase(); // "HELLO WORLD"
String lower = str1.toLowerCase(); // "hello world"

  1. 比较操作
boolean isEqual = str1.equals("Hello World"); // true
boolean isIgnoreCase = str1.equalsIgnoreCase("hello world"); // true
int compareResult = str1.compareTo("Hello"); // 正值

四、不可变性原理

当修改字符串时,实际是创建新对象:

String original = "Java";
original = original + "Script"; // 创建新对象"JavaScript"

五、字符串池(String Pool)

JVM 维护的字符串常量池优化内存使用:

String a = "abc"; // 放入池中
String b = "abc"; // 复用池中对象
System.out.println(a == b); // true

String c = new String("abc"); // 新建对象
System.out.println(a == c); // false

六、性能优化

频繁修改字符串时使用 StringBuilder

StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" ");
sb.append("World");
String result = sb.toString(); // 高效拼接

七、正则表达式

使用 matches() 方法进行模式匹配:

String email = "user@example.com";
boolean isValid = email.matches("\\w+@\\w+\\.\\w+"); // 简单验证

八、编码转换

处理不同字符集:

byte[] utf8Bytes = str1.getBytes("UTF-8");
String decoded = new String(utf8Bytes, "UTF-8");

总结

String 类的核心特性:

  1. 不可变性确保线程安全
  2. 字符串池机制优化内存
  3. 提供丰富的操作方法
  4. StringBuilder/StringBuffer 配合使用提高效率

建议通过实际编码练习掌握各种方法的使用场景,特别注意字符串比较应使用 equals() 而非 == 运算符。

更多推荐