1. Java字符串与排序实战指南
作为一名常年与算法题搏斗的Java开发者,我深知字符串处理和排序操作在面试和日常编码中的重要性。今天这份指南,是我在刷了上百道LeetCode题目后,总结出的最实用、最高频的Java字符串与排序语法合集。不同于教科书式的罗列,这里每个技巧都经过实战检验,附上典型应用场景和避坑指南。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 字符串核心操作精要
2.1 基础操作四件套
字符串长度、访问、遍历和转换是每天都要用的基本功,但魔鬼藏在细节里:
java复制String s = "algorithm";
// 长度获取(注意不是length属性)
int len = s.length(); // 9
// 字符访问(越界检查很重要)
char first = s.charAt(0); // 'a'
char last = s.charAt(s.length()-1); // 'm'
// 遍历标准模板(优先用增强for)
for(char c : s.toCharArray()) {
System.out.println(c);
}
// 与char[]互转(修改字符串必备)
char[] arr = s.toCharArray();
String restored = new String(arr);
避坑提示:直接使用
str[i]访问字符是C++的习惯,Java中必须用charAt()。忘记这点在白板 coding 时会非常尴尬。
2.2 字符串比较的深坑
新手最常踩的雷区莫过于==和equals的混淆:
java复制String s1 = new String("hello");
String s2 = "hello";
// 错误做法(比较对象引用)
System.out.println(s1 == s2); // false
// 正确做法(比较内容)
System.out.println(s1.equals(s2)); // true
原理剖析:Java字符串常量池的特殊机制导致==行为反直觉。即使两个字符串内容相同,new String()会在堆中创建新对象,而字面量赋值会尝试复用常量池中的对象。
2.3 高效字符串构建
在需要频繁修改字符串的场景(如拼接、反转),StringBuilder比直接+拼接效率高100倍以上:
java复制StringBuilder sb = new StringBuilder();
// 链式调用更优雅
sb.append("LeetCode")
.append(" ")
.append(2023);
String result = sb.toString(); // "LeetCode 2023"
性能对比:在循环中进行10000次拼接,StringBuilder耗时约2ms,而+拼接需要200ms以上。这是因为每次+都会创建新String对象,而StringBuilder内部使用可扩展的
