将循环中不变的计算(如list.size()、array.length)提前赋值为局部变量,避免重复计算,可显著提升性能。错误写法:for (int i = 0; i < list.size(); i++)。

直接把循环条件中会重复计算的部分提前算好,存成局部变量再用,就能避开反复执行带来的开销。
把不变的计算结果提出来
比如 list.size()、array.length 或某个固定方法调用,在循环里每次判断都重新执行,其实值根本没变。提前赋值一次,后面只读变量,效率明显提升。
- 错误写法:
for (int i = 0; i - 正确写法:
int size = list.size(); for (int i = 0; i
耗时操作坚决移出循环体
如果条件里涉及数据库查询、正则匹配、对象克隆或复杂运算,哪怕只执行一次也比在循环里反复跑强得多。尤其注意静态工具类方法或外部服务调用,别让它混进 for 的判断逻辑里。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 例如:
boolean valid = validateConfig();放在循环前,而不是写成if (validateConfig())在循环内反复调用 - 再如:
Pattern pattern = Pattern.compile("...");预编译后复用,别在每次迭代里重新 compile
优先选用增强 for 循环(for-each)
对集合或数组遍历时,不用手动维护索引和边界判断,自然就规避了 i 这类易错又低效的写法。JVM 对它的底层优化也更成熟。
立即学习“Java免费学习笔记(深入)”;
- 适用场景:只需要逐个访问元素,不依赖下标
- 注意点:不能在遍历中修改集合结构(如 remove/add),否则抛
ConcurrentModificationException
嵌套循环注意内外层顺序
外层循环次数越少越好,内层可多些。因为外层每次迭代都会触发内层完整执行——如果外层是十万次、内层是十次,总操作量是一百万;反过来,外层十次、内层十万次,总量不变,但 JVM 分支预测和缓存命中率更高,实际耗时更低。
- 推荐:
for (int i = 0; i - 避免:
for (int i = 0; i

















