循环变量初始化必须在for语句圆括号第一部分完成,作用域仅限循环内部;Java要求声明与初始化统一置于第一个分号前,如for (int i = 0; i < 10; i++)。

循环变量初始化不是“写在哪都行”,而是有明确位置和规则——必须在 for 语句的圆括号第一部分 完成,且作用域严格限定在 for 循环内部。
初始化必须写在 for 括号里
Java 要求循环变量的声明与初始化统一放在 for 的第一个分号前。例如:
-
✅ 正确:
for (int i = 0; i —— 变量 <code>i在此处声明、赋初值,生命周期仅限循环内 -
❌ 错误:
int i = 0; for (i = 0; i —— 虽能编译,但 <code>i变成方法级局部变量,违背 for 的设计本意,易引发复用冲突或作用域混淆
多变量初始化要类型一致、逗号分隔
当需要同步控制多个相关变量时(如双指针遍历),可在初始化部分用逗号连接多个同类型语句:
for (int left = 0, right = arr.length - 1; left- 注意:不能混用类型,
for (int i = 0, String s = "a"; ...)会编译失败
省略初始化时必须保留分号
如果变量已在循环外定义,想复用它,仍需在 for 括号中留空第一部分,但分号不可省略:
立即学习“Java免费学习笔记(深入)”;
int i = 0; for (; i —— 合法,<code>i是外部变量,循环结束后仍可访问for (i = 0; i —— 编译报错,缺少第一个分号,语法不合法
别和局部变量初始化规则搞混
for 循环里的变量属于“for 声明的局部变量”,它和普通方法内变量一样,必须初始化才能使用;但它又比普通局部变量更严格——一旦离开 for 大括号,就彻底不可见:
for (int j = 0; j → 编译错误:“cannot resolve symbol j”- 这和成员变量自动初始化为 0 或 null 完全无关,for 中的变量不享受任何默认值


















