java string方法

admin 102 0
Java String类是不可变的字符序列,提供了丰富的字符串操作方法,核心功能包括:创建(字面量、构造方法)、操作(substring截取、concat拼接、replace替换)、比较(equals内容比较、equalsIgnoreCase忽略大小写、compareTo字典序)、查找(indexOf/lastIndexOf索引、contains包含判断)、转换(split分割、trim去空格、toUpperCase/toLowerCase大小写转换)及实用方法(length长度、charAt字符获取、isEmpty判空),其不可变性确保线程安全,字符串常量池优化性能,是Java文本处理的基础,广泛应用于开发场景。

Java String方法详解:核心功能与实用技巧

在Java编程中,String类是最常用的引用类型之一,它代表不可变的字符序列,无论是简单的文本处理、数据传输还是复杂的业务逻辑实现,String方法都扮演着至关重要的角色,本文将系统介绍String类的核心方法,包括其功能、语法、使用示例及注意事项,帮助开发者深入掌握这一基础工具。

字符串创建与比较

字符串创建

String对象的创建方式主要有两种:

字面量创建

Java会使用字符串常量池进行优化,相同字面量的String对象不会重复创建。

String str1 = "Hello";
String str2 = "Hello"; // str1和str2指向常量池中同一对象
System.out.println(str1 == str2); // 输出true
new关键字创建

每次都会在堆内存中创建新的对象,即使内容相同。

String str3 = new String("Hello"); // str3与str1、str2是不同对象
System.out.println(str1 == str3); // 输出false

字符串比较

String提供了多种比较方法,需根据场景选择:

equals()equalsIgnoreCase()
  • equals():比较字符串内容是否完全相同(区分大小写)。
  • equalsIgnoreCase():比较字符串内容是否相同(忽略大小写)。
String str1 = "Java";
String str2 = "java";
System.out.println(str1.equals(str2)); // false
System.out.println(str1.equalsIgnoreCase(str2)); // true
compareTo()compareToIgnoreCase()
  • compareTo():按字典顺序比较两个字符串,返回差值(str1 > str2返回正数,str1 < str2返回负数,相等返回0)。
  • compareToIgnoreCase():忽略大小写的字典序比较。
String str3 = "Apple";
String str4 = "Banana";
System.out.println(str3.compareTo(str4)); // -1('A'的ASCII码小于'B')
equals()的区别
  • 比较的是两个对象的内存地址(是否为同一对象)。
  • equals():比较的是字符串内容(String类重写了Objectequals方法)。
String str5 = "hello";
String str6 = new String("hello");
System.out.println(str5 == str6);      // false(地址不同)
System.out.println(str5.equals(str6)); // true(内容相同)

字符串查找与获取

获取长度与字符

  • length():返回字符串长度(字符个数)。
  • charAt(int index):获取指定索引处的字符(索引从0开始)。
String str = "Hello World";
System.out.println(str.length()); // 11
System.out.println(str.charAt(0)); // 'H'
System.out.println(str.charAt(4)); // 'o'

查找字符/子串位置

  • indexOf():查找字符或子串首次出现的索引,若不存在返回-1
  • lastIndexOf():查找字符或子串最后一次出现的索引。
String str = "Hello World";
System.out.println(str.indexOf('o'));      // 4
System.out.println(str.indexOf("World"));  // 6
System.out.println(str.indexOf('x'));      // -1
System.out.println(str.lastIndexOf('o')); // 7

截取子串

  • substring(int beginIndex):从beginIndex截取到字符串末尾。
  • substring(int beginIndex, int endIndex):截取[beginIndex, endIndex)范围内的子串(左闭右开)。
String str = "Hello World";
System.out.println(str.substring(6)); // "World"
System.out.println(str.substring(0, 5)); // "Hello"

字符串修改与拼接

拼接字符串

  • concat(String str):在原字符串末尾拼接指定字符串(返回新字符串,原字符串不变)。
  • 运算符:Java支持用拼接字符串,底层会自动转换为StringBuilder(推荐使用,更简洁高效)。
String str1 = "Java";
String str2 = str1.concat(" is fun");
System.out.println(str2); // "Java is fun"
System.out.println(str1); // "Java"(原字符串不变)
String str3 = "Hello" + " " + "World"; // "Hello World"

性能提示:在循环或大量字符串拼接时,应优先使用StringBuilder而非运算符,因为在每次拼接时都会创建新的StringBuilder对象。

替换字符/子串

  • replace(char oldChar, char newChar):替换所有指定字符。
  • replace(CharSequence target, CharSequence replacement):替换所有匹配的子串(支持字符序列)。
String str = "Hello Java";
System.out.println(str.replace('a', 'A')); // "Hello JAva"
System.out.println(str.replace("Java", "Python")); // "Hello Python"

其他常用方法

去除空白字符

  • trim():去除字符串两端的空白字符(包括空格、制表符、换行符等)。
String str = "  Hello World  ";
System.out.println(str.trim()); // "Hello World"

分割字符串

  • split(String regex):根据正则表达式分割字符串。
String str = "apple,banana,orange";
String[] fruits = str.split(",");
for (String fruit : fruits) {
    System.out.println(fruit);
}

连接字符串

  • join(CharSequence delimiter, CharSequence... elements):使用指定的分隔符连接多个字符串。
String result = String.join(", ", "apple", "banana", "orange");
System.out.println(result); // "apple, banana, orange"

格式化字符串

  • format(String format, Object... args):使用格式化字符串和参数创建格式化字符串。
String formatted = String.format("姓名: %s, 年龄: %d", "张三", 25);
System.out.println(formatted); // "姓名: 张三, 年龄: 25"

实用技巧与最佳实践

  1. 避免使用进行大量字符串拼接:在循环或大量字符串拼接时,应使用StringBuilder以提高性能。
// 不推荐
String result = "";
for (int i = 0; i < 1000; i++) {
    result += "a";
}
// 推荐
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000; i++) {
    sb.append("a");
}
String result = sb.toString();
  1. 使用String.join()进行数组/列表拼接:比循环使用更简洁高效。
List<String> names = Arrays.asList("张三", "李四", "王五");
String result = String.join(", ",

标签: #Java #方法