力扣刷题常用API总结 (1):字符串,字符数组
处理字符串的两种常用方法:toCharArray()
和 charAt()
的比较
比较总结
特性 | toCharArray() | charAt() |
---|---|---|
返回值 | 字符数组(char[] ) | 单个字符(char ) |
内存占用 | 创建一个新的字符数组,占用额外内存 | 无额外内存占用 |
性能 | 适合需要多次访问或修改字符的场景 | 适合单次或少量字符访问的场景 |
适用场景 | 遍历、修改、随机访问字符串中的字符 | 访问字符串中的某个特定字符 |
字符串修改 | 可以通过修改字符数组间接修改字符串 | 不能直接修改字符串 |
代码示例 | char[] arr = text.toCharArray(); | char c = text.charAt(0); |
选择建议
- 如果需要遍历字符串中的所有字符或修改字符,使用
toCharArray()
。 - 如果只需要访问字符串中的某个字符或少量字符,使用
charAt()
。
##比较字符串的内容常用方法: equals
方法
用于比较两个对象的内容是否相等。对于字符串(String),equals 方法可以直接比较字符串的内容。然而,对于字符数组(char[]),equals 方法的行为与字符串不同,因为它继承自 Object 类,默认比较的是引用是否相等,而不是内容是否相等。
字符数组的比较(char[])
字符数组是对象,但其 equals 方法没有重写,默认比较的是引用是否相等,而不是内容是否相等。
示例:
char[] arr1 = {'h', 'e', 'l', 'l', 'o'};
char[] arr2 = {'h', 'e', 'l', 'l', 'o'};
char[] arr3 = arr1;System.out.println(arr1.equals(arr2)); // false,引用不同
System.out.println(arr1.equals(arr3)); // true,引用相同
如何比较字符数组的内容?
如果需要比较两个字符数组的内容是否相等,可以使用以下方法:
方法 1:使用 Arrays.equals()
java.util.Arrays 类提供了一个静态方法 equals,用于比较两个数组的内容是否相等。
示例:
import java.util.Arrays;char[] arr1 = {'h', 'e', 'l', 'l', 'o'};
char[] arr2 = {'h', 'e', 'l', 'l', 'o'};System.out.println(Arrays.equals(arr1, arr2)); // true,内容相同
方法 2:手动比较
可以手动遍历两个数组,逐个比较每个元素。
示例:
public static boolean areEqual(char[] arr1, char[] arr2) {if (arr1.length != arr2.length) {return false;}for (int i = 0; i < arr1.length; i++) {if (arr1[i] != arr2[i]) {return false;}}return true;
}public static void main(String[] args) {char[] arr1 = {'h', 'e', 'l', 'l', 'o'};char[] arr2 = {'h', 'e', 'l', 'l', 'o'};System.out.println(areEqual(arr1, arr2)); // true,内容相同
}
总结
推荐使用
对于字符数组的内容比较,优先使用 Arrays.equals()。
转换为字符串的两种常用方法: valueOf(i)
与Integer.toString(i)
valueOf(i) 是 Java 中 String 类的一个静态方法,**用于将其他类型的数据(如 int、double、boolean 等)转换为字符串。**它的作用是返回参数的字符串表示形式。
- 方法定义
valueOf 是一个重载方法,有多个版本,适用于不同的数据类型。以下是常用的几种形式:
public static String valueOf(int i) // 将 int 转换为字符串
public static String valueOf(double d) // 将 double 转换为字符串
public static String valueOf(boolean b) // 将 boolean 转换为字符串
public static String valueOf(Object obj) // 将对象转换为字符串
- 使用示例
示例 :将 int 转换为字符串
int num = 123;
String str = String.valueOf(num); // 将整数 123 转换为字符串 "123"
System.out.println(str); // 输出 "123"
- valueOf(i) 的工作原理
对于基本数据类型(如 int、double、boolean 等),valueOf 会将其转换为对应的字符串表示。
对于对象类型,valueOf 会调用对象的 toString() 方法,返回其字符串表示。
- valueOf(i) 与 Integer.toString(i) 的区别
valueOf(i) 和 Integer.toString(i) 都可以将整数转换为字符串,但它们的实现方式略有不同:
String.valueOf(i) 内部调用了 Integer.toString(i)。
String.valueOf(i) 是一个通用的方法,适用于多种数据类型,而 Integer.toString(i) 是专门用于 int 类型的方法。
示例:
int num = 123;
String str1 = String.valueOf(num); // 使用 valueOf
String str2 = Integer.toString(num); // 使用 toString
System.out.println(str1.equals(str2)); // 输出 true,结果相同
- valueOf(i) 的应用场景
将数字转换为字符串:
当需要将数字(如 int、double)与其他字符串拼接时,可以使用 valueOf。
示例:
int age = 25;
String message = "I am " + String.valueOf(age) + " years old.";
System.out.println(message); // 输出 "I am 25 years old."
- 注意事项
空对象处理:
如果 valueOf 的参数是 null,它会返回字符串 “null”,而不是抛出异常。
示例:
Object obj = null;
String str = String.valueOf(obj);
System.out.println(str); // 输出 "null"
- 总结