循环语句是 Java 编程中实现代码重复执行的核心语法,能有效简化重复操作(如遍历数组、累加计算等)。Java 中最常用的循环语句包括 for 循环和 while 循环,它们在语法结构和适用场景上各有特点,掌握其写法和区别是编写高效代码的基础。
一、Java 循环语句的基本写法
(一)for 循环
for 循环的语法结构清晰,适合已知循环次数的场景,基本格式为:
for (初始化语句; 循环条件; 迭代语句) { // 循环体:需要重复执行的代码}
初始化语句:循环开始前执行一次,通常用于定义和初始化循环变量(如int i = 0)。
循环条件:每次循环前判断,结果为true则执行循环体,false则退出循环(如i < 10)。
迭代语句:每次循环体执行后执行,通常用于更新循环变量(如i++)。
示例:打印 1 到 5 的数字
for (int i = 1; i <= 5; i++) { System.out.println(i);}
(二)while 循环
while 循环更适合循环次数不确定、仅依赖条件判断的场景,基本格式为:
初始化语句;while (循环条件) { // 循环体 迭代语句; // 可选,用于更新条件变量}
循环开始前需单独初始化变量,每次循环前判断条件,条件为true则执行循环体,否则退出。
示例:计算 1 到 10 的累加和
int sum = 0;int i = 1;while (i <= 10) { sum += i; i++; // 迭代语句,避免无限循环}System.out.println("和为:" + sum);
(三)do-while 循环
do-while 循环是 while 循环的变体,特点是先执行一次循环体,再判断条件,适合至少需要执行一次的场景,格式为:
初始化语句;do { // 循环体 迭代语句;} while (循环条件);
示例:直到用户输入正确密码才退出
Scanner scanner = new Scanner(System.in);String password;do { System.out.print("请输入密码:"); password = scanner.next();} while (!"123456".equals(password));System.out.println("密码正确,登录成功");
二、for 循环与 while 循环的核心区别
(一)语法结构与变量作用域
for 循环:循环变量(如i)在()内定义,作用域仅限于循环体,循环结束后变量自动销毁,避免变量污染。
while 循环:循环变量在外部定义,作用域覆盖循环前后,适合循环结束后仍需使用变量的场景(如上述累加和示例中,i在循环后可继续使用)。
(二)适用场景
for 循环优先场景:
已知循环次数(如遍历长度固定的数组):
int[] nums = {1, 2, 3, 4};for (int j = 0; j < nums.length; j++) { System.out.println(nums[j]);}
迭代器遍历(如集合遍历):
List<String> list = Arrays.asList("a", "b", "c");for (String s : list) { // 增强for循环,简化遍历 System.out.println(s);}
while 循环优先场景:
循环次数不确定,依赖动态条件(如读取文件直到末尾):
BufferedReader br = new BufferedReader(new FileReader("test.txt"));String line;while ((line = br.readLine()) != null) { // 未知文件行数,读到null为止 System.out.println(line);}
等待某个事件触发(如用户输入特定指令才退出)。
(三)无限循环的写法
for 循环的无限循环通常省略条件和迭代(需在循环体中手动控制退出):
for (;;) { // 初始化、条件、迭代均可省略 if (条件满足) break;}
while 循环的无限循环直接写while (true):
while (true) { if (条件满足) break;}
两种写法功能相同,仅风格差异,实际开发中需避免无意识的无限循环(如忘记迭代语句)。
三、使用循环的注意事项
避免死循环:确保循环条件最终会变为false,如 while 循环中必须包含迭代语句(i++),否则会一直执行导致程序卡死。
循环体精简:循环体内避免冗余操作(如重复计算固定值),提升效率。
选择合适类型:已知次数用 for,条件驱动用 while,至少执行一次用 do-while,遵循 “场景适配” 原则可提升代码可读性。
for 循环和 while 循环本质上都是实现重复执行的工具,并无绝对优劣,关键在于根据场景选择。熟练掌握两者的写法和区别,能让代码更简洁、高效,也是理解更复杂控制流(如嵌套循环)的基础。初学者可通过多练习不同场景的循环实现,逐步形成编程直觉。