一、字符串(String)常用方法

字符串是不可变对象(修改会创建新对象),核心方法围绕内容操作、查找、转换展开,部分场景需配合 StringBuilder 实现可变操作。

1. 大小写转换

  • toLowerCase():转为小写
  • toUpperCase():转为大写
String s = "Hello World";
System.out.println(s.toLowerCase()); // hello world
System.out.println(s.toUpperCase()); // HELLO WORLD

2. 字符过滤与替换

  • replaceAll(regex, replacement):按正则表达式替换字符(常用作过滤)
    • 场景:删除非字母 / 非数字字符([^a-z0-9] 表示 “非字母非数字”)
String s = "A man, a plan, a canal: Panama";
// 过滤非字母数字,转为小写(用于回文判断等场景)
String clean = s.replaceAll("[^a-z0-9]", "").toLowerCase();
System.out.println(clean); // amanaplanacanalpanama

3. 字符与索引操作

  • charAt(int index):获取指定索引的字符(索引从 0 开始)
  • indexOf(String str):返回子串首次出现的索引,无则返回 -1
String s = "abcdef";
System.out.println(s.charAt(2)); // c(索引2对应第3个字符)
System.out.println(s.indexOf("cd")); // 2(子串"cd"从索引2开始)
System.out.println(s.indexOf("xyz")); // -1(无此子串)

4. 拆分与拼接

  • split(String regex):按正则拆分字符串为数组(常用空格拆分单词)
String s = "dog cat cat fish";
String[] words = s.split(" "); // 按空格拆分
System.out.println(Arrays.toString(words)); // [dog, cat, cat, fish]

5. 长度获取

  • 字符串长度:length()带括号,因为是方法)
String s = "abc";
int len = s.length();
System.out.println(len); // 3

二、可变字符串(StringBuilder)常用方法

StringBuilder 是可变字符串,避免频繁创建新对象,适合频繁修改、拼接、反转场景。

1. 核心方法

方法 作用
append(任意类型) 追加内容(字符串、数字、字符等)
reverse() 反转字符串(无返回值,直接修改自身)
toString() 转为不可变的 String 类型
setLength(int len) 截断或补空字符(调整字符串长度)

2. 代码示例

// 1. 创建 StringBuilder 对象
StringBuilder sb = new StringBuilder();

// 2. 追加内容
sb.append("Hello");
sb.append(", ");
sb.append("World!");
System.out.println(sb); // Hello, World!

// 3. 反转
sb.reverse();
System.out.println(sb); // !dlroW ,olleH

// 4. 截断(保留前5个字符)
sb.setLength(5);
System.out.println(sb); // !dlro

// 5. 转为 String
String result = sb.toString();
System.out.println(result); // !dlro

三、数组(Array)常用操作

数组是固定长度的容器,需通过 Arrays 工具类实现排序、查找、转集合等功能。

1. 核心工具类:java.util.Arrays

(1)数组排序

  • Arrays.sort(数组):对数组升序排序(支持 int、String、自定义对象等)
// 基本类型数组排序
int[] arr1 = {3, 1, 4, 2};
Arrays.sort(arr1);
System.out.println(Arrays.toString(arr1)); // [1, 2, 3, 4]

// 字符串数组排序(按字典序)
String[] arr2 = {"banana", "apple", "cherry"};
Arrays.sort(arr2);
System.out.println(Arrays.toString(arr2)); // [apple, banana, cherry]

(2)数组转集合

  • Arrays.asList(数组):将数组转为 List(注意:返回的 List 不可增删,需用 new ArrayList<>() 包装)
String[] words = {"dog", "cat", "fish"};
// 方式1:不可增删的 List
List<String> list1 = Arrays.asList(words);

// 方式2:可增删的 ArrayList(推荐)
List<String> list2 = new ArrayList<>(Arrays.asList(words));
list2.add("bird"); // 合法
System.out.println(list2); // [dog, cat, fish, bird]

(3)二维数组排序(自定义规则)

通过 Arrays.sort(数组, Comparator) 实现自定义排序(如按二维数组的某一列排序):

// 二维数组:每个元素是 [起点, 终点]
int[][] points = {{1, 3}, {2, 1}, {4, 2}};

// 按“终点”升序排序(points[i][1] 是终点)
Arrays.sort(points, new Comparator<int[]>() {
    @Override
    public int compare(int[] a, int[] b) {
        // a[1] > b[1]:a放后面(升序);反之放前面
        return a[1] - b[1]; 
    }
});

System.out.println(Arrays.deepToString(points)); // [[2, 1], [4, 2], [1, 3]]

2. 数组长度获取

  • 数组长度:length不带括号,因为是字段)
int[] arr = {1, 2, 3};
int len = arr.length;
System.out.println(len); // 3

3. 数组遍历(常见循环方式)

场景 代码示例 说明
正序遍历 for (int i = 0; i < arr.length; i++) {} 从索引 0 到 length-1
倒序遍历 for (int i = arr.length-1; i >=0; i--) {} 从最后一个元素到第一个
增强 for 循环(遍历值) for (int num : arr) {} 无需索引,直接获取每个元素
双指针(相向) for (int i=0, j=arr.length-1; i<j; i++,j--) {} 头尾同时向中间遍历(如回文判断)

四、数字与数组的常用操作

1. 提取数字的每一位(个、十、百、千位)

通过取余(%10) 提取最后一位,整除(/10) 去掉最后一位,循环实现:

int n = 1234;

// 提取个位、十位、百位、千位
int ge = n % 10;        // 4(个位)
int shi = n / 10 % 10;  // 3(十位)
int bai = n / 100 % 10; // 2(百位)
int qian = n / 1000;    // 1(千位)

// 循环倒序输出每一位(4 → 3 → 2 → 1)
while (n != 0) {
    int digit = n % 10;
    System.out.println(digit);
    n = n / 10;
}

2. 集合(List)常用操作

(1)List 创建与基本方法

// 1. 创建可增删的 ArrayList
List<String> strList = new ArrayList<>();
List<int[]> intList = new ArrayList<>(); // 存储int数组的List

// 2. 核心方法
strList.add("a");       // 添加元素
strList.add("b");
System.out.println(strList.get(0)); // 获取索引0的元素:a
System.out.println(strList.size()); // 获取长度:2
strList.remove(1);      // 删除索引1的元素
System.out.println(strList); // [a]

(2)List 与数组的区别

特性 数组(Array) List(如 ArrayList)
长度 固定(创建时指定) 动态(自动扩容)
方法支持 仅 length 字段,无其他方法 丰富方法(add/remove/get/size 等)
泛型支持 不支持泛型(需手动强转) 支持泛型(类型安全)
适用场景 长度固定、简单存储 频繁增删、需要集合 API(如流式处理)

五、关键对比总结

操作目标 长度获取方式 核心工具 / 类 可变 / 不可变
String 字符串 s.length() String 类方法 不可变
StringBuilder sb.length() StringBuilder 类方法 可变
数组(Array) arr.length Arrays 工具类 长度固定
List 集合 list.size() ArrayList/LinkedList 类方法 动态可变

总结

  1. 字符串操作:优先用 String 类方法,频繁修改时用 StringBuilder(避免性能损耗);
  2. 数组操作:依赖 Arrays 工具类实现排序、转集合,注意数组长度固定;
  3. 数字提取:通过 %10 和 /10 循环提取每一位,适合数字反转、回文判断等场景;
  4. 集合与数组:List 支持动态扩容和丰富方法,数组适合简单、固定长度的存储,两者可通过 Arrays.asList 和 list.toArray 转换。

 

更多推荐