在 Java 编程中,for 循环 是一个“平凡又伟大”的存在!🔄 它简单、易用,却是编程中最不可或缺的工具之一。
但对于 Java 初学者来说,for 循环的语法和用法常常让人一头雾水 🤯。
什么是 for 循环?它到底可以用来做什么?🔥 基本的循环、嵌套循环、带标签的循环、增强型循环……这些看似复杂的概念,其实和你的日常开发(甚至是毕业设计💼)息息相关!
那么,如何快速掌握 for 循环,并高效写出优雅代码呢?
别担心!😎 这篇文章将通过 通俗易懂的讲解 和 实用代码示例,带你逐步拆解 for 循环的秘密,彻底搞懂它的用法!🚀
重点来了:文章末尾还有超值福利大放送!🎁 不仅有实用的代码模板,还包含助力毕业设计的独家技巧!快往下看,千万别错过哦~✨📚
Java 中有多种循环语句,其中之一是 for 循环。for 循环用于重复执行一组语句,直到指定的条件为 false 为止。
它提供了一种紧凑的方法来初始化循环变量、检查条件并更新循环变量。当我们提前知道需要执行多少次时,它特别有用。
一.for 循环的结构
for 循环的语法
for (初始化; 条件; 步进) {
// 代码块
}
- 初始化: 在循环开始时执行一次,通常用于声明和初始化循环控制变量。
- 条件: 在每次迭代之前,检查这个条件。如果条件为 true,循环继续;如果为 false,循环结束。
- 步进: 每次迭代后执行,通常用于增加或减少循环控制变量。
初始化、条件 和 步进 都是可以不写的,但是两个;不能省略
二.基本的 for 循环示例
下面我们编写一个 Java 程序,使用 for 循环打印从 1 到 5 的数字:
示例代码:
public class ForLoopExample {
public static void main(String[] args) {
// 初始化 i 为 1,条件是 i 小于等于 5,每次迭代后 i 增加 1
for (int i = 1; i <= 5; i++) {
// 打印当前的 i 值
System.out.println(i);
}
}
}
- int i = 1 是初始化,循环变量从 1 开始计数。
- i
- i++ 是步进,在每次迭代后将 i 增加 1。
输出结果:
1
2
3
4
5
上述for循环代码的执行过程可以用如下图所示
三.for 循环高级部分
Java 的 for 循环功能多样,可以以多种形式使用,以适应不同的场景
3.1 带标签的 for 循环
Java 提供了一种带标签的循环,特别适用于嵌套循环的场景,在内部循环中可以通过标签退出外部循环。
标签是一个紧接着冒号 (:) 的标识符,放在循环语句之前,可以在 break 或 continue 语句中引用,从而更精确地控制程序的执行流程。
示例代码:
outerLoop: // 定义外部循环的标签
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
// 如果 i * j 的值大于 6,打印信息并退出外部循环
if (i * j > 6) {
System.out.println("Breaking at i=" + i + ", j=" + j);
break outerLoop; // 跳出外部循环
}
}
}
在这个示例中,outerLoop 标签与外层的 for 循环相关联。当内层循环中条件 i * j > 6 满足时,break outerLoop 语句会终止外层循环,而不仅仅是内层循环。这个功能增加了控制的灵活性,允许你一次性退出多个循环,特别适用于简单退出当前循环不足以满足需求的复杂循环场景。
输出结果:
Breaking at i=2, j=4
3.2 在 for 循环中使用两个变量
for 循环可以使用多个变量,适用于同时迭代或复杂条件的情况。
例如,检查字符串是否为回文:
// 导入 Scanner 类,用于获取用户输入
import java.util.Scanner;
// 定义一个公共类 StringUsingHalfLoop
public class StringUsingHalfLoop {
// 主方法,程序的入口
public static void main(String[] args) {
// 创建一个 Scanner 对象,用于从控制台获取输入
Scanner scanner = new Scanner(System.in);
// 提示用户输入一个字符串
System.out.print("请输入一个字符串 : ");
// 使用 scanner 接收用户输入的字符串
String str = scanner.nextLine();
// 调用 isPalindrome 方法判断字符串是否是回文
boolean isPalin = isPalindrome(str);
// 如果返回值为 true,输出“字符串是回文”
if (isPalin)
System.out.println("字符串是回文");
// 如果返回值为 false,输出“字符串不是回文”
else
System.out.println("字符串是回文");
}
// 定义一个静态方法 isPalindrome,用于判断字符串是否是回文
static boolean isPalindrome(String str) {
// 使用两个变量 i 和 j,一个从字符串的开头开始,一个从末尾开始
for (int i = 0, j = str.length() - 1; i < str.length() / 2; i++, j--) {
// 比较两个字符,如果不相等,立即返回 false,表示不是回文
if (str.charAt(i) != str.charAt(j)) {
return false;
}
}
// 如果循环结束且所有字符都匹配,返回 true,表示是回文
return true;
}
}
输入输出示例:
输入:madam
输出:字符串是回文
输入:adam
输出:字符串不是回文
3.3 无限循环
无限循环(infinite for loop)会无限运行下去,直到被外部强制停止。它在某些需要任务持续运行的场景中非常有用,比如服务器进程或事件监听器等。
语法如下:
for (;;) {
// 无限循环的代码块
}
在使用 for 循环时,必须谨慎设置条件,否则可能会导致创建一个无限循环。
例如,假设你想打印从 10 到 1 的数字,可以使用以下代码:
public class ForLoopMain {
public static void main(String[] args) {
// 初始化 i 为 10,每次迭代后 i 减少 1
for (int i = 10; i > 0; i--) {
// 打印当前的 i 值
System.out.print(" " + i);
}
}
}
输出结果:
10 9 8 7 6 5 4 3 2 1
在上述代码中,如果将 i-- 替换为 i++,循环将进入无限循环状态。
public class ForLoopMain {
public static void main(String[] args) {
for (int i = 10; i >0; i++) {
System.out.print(" "+i);
}
}
}
3.4 增强型 for 循环(for-each 循环)
增强型 for 循环(也称为 “for-each” 循环)从 Java 5 中引入,非常适合用于遍历数组或集合。它不需要显式的计数器或迭代器变量,从而使代码更简洁且更少出错。该循环非常优雅,可以在无需明确索引的情况下读取集合中的每个元素。
增强for循环语法如下:
for (Type var : arrayOrCollection) {
// Statements using var
}
例如,假设我们有一个整数数组,希望打印出每个元素:
int[] numbers = {1, 2, 3, 4, 5};
for (int number : numbers) {
// 遍历数组中的每个元素
System.out.println(number);
}
这个增强型 for 循环可以理解为:“对于数组 `numbers` 中的每个整数 `number`,打印 `number` 的值”。这个循环会遍历数组 numbers 中的每个元素,依次将每个元素赋值给变量 number,然后执行循环体中的代码。上述代码输出结果如下:
1
2
3
4
5
如果给定一个 List 类型的对象 listOfStrings,我们可以按如下方式进行遍历:
for (String element : listOfStrings) {
System.out.println(element);
}
四.实践练习
让我们通过编写一个程序来应用所学的 for 循环知识。
给定一个整数数组,例如 {32, 45, 53, 65, 43, 23},你的任务是从这个数组中搜索一个特定的元素。如果该元素存在,程序应该输出 “PRESENT”;如果不存在,程序应该输出 “NOT PRESENT”。
我建议你先尝试自己编写这个程序,然后再参考下面的代码:
// 定义一个公共类 ForStatementExample
public class ForStatementExample {
// 主方法,程序的入口
public static void main(String[] args) {
// 创建 ForStatementExample 类的对象
ForStatementExample bse = new ForStatementExample();
// 定义一个整数数组
int arr[] = {32, 45, 53, 65, 43, 23};
// 调用 findElementInArr 方法查找数组中的元素 53,并打印结果
System.out.println(bse.findElementInArr(arr, 53));
}
// 定义一个方法,用于在数组中查找指定的元素
// @param arr 要查找的整数数组
// @param elementTobeFound 要查找的目标元素
// @return 如果找到元素,返回 "PRESENT";如果未找到,返回 "NOT PRESENT"
public String findElementInArr(int arr[], int elementTobeFound) {
// 使用 for 循环遍历数组
for (int i = 0; i < arr.length; i++) {
// 如果当前元素等于目标元素
if (arr[i] == elementTobeFound) {
// 打印找到的元素信息
System.out.println(elementTobeFound + " is present in the array");
// 返回 "PRESENT",表示元素存在
return "PRESENT";
}
}
// 如果遍历结束仍未找到目标元素,返回 "NOT PRESENT"
return "NOT PRESENT";
}
}
输出结果:
53 is present in the array
PRESENT
五.总结
for 循环是 Java 中功能强大的控制流语句,可以实现简洁、高效的代码迭代。不论是遍历数组、集合,还是嵌套循环,理解并熟练使用 for 循环都能使你的程序更高效、易读。
六.超级福利
超值福利来了!🎉(资料整理不易,同学们给一键三连哦!)
为了帮助大家更好地学习和实践 Java 编程,特别为你准备了一份超实用的学习资源!🎁
这是一份完整的作品——“SpringBoot+Vue实现的仿小米电子产品售卖商城系统”源码,不仅包含详细的 讲解视频教程 和 开发文档,还附赠了 参考论文,让你在毕业设计或实际的项目开发中更加得心应手!💼✨
这个作品将带你从前端到后端,深入了解项目开发的流程,掌握实用的开发技能,帮助你把 Java 的知识真正学以致用!其中,还会教你怎么把系统对接到支付宝,实现整个支付流程
获取方式非常简单!👇只需在评论区留言或者私信我,也可以加我微信:RJ_xiaohui,告诉我你对学习 Java 或完成毕业设计的困惑和需求,我将第一时间与你联系,为你答疑结果,分享这份珍贵的资源!
还等什么?抓住这个机会,轻松提升编程能力,让你的学习和项目更进一步!🚀 快来领取吧! 🌟
记得 点赞👍、关注⭐、收藏📂,方便以后随时复习!
6.1.项目介绍
项目描述:这是一个基于SpringBoot+Vue框架开发的仿小米电子产品售卖商城系统。首先,这是一个前后端分离的项目,代码简洁规范,注释说明详细,易于理解和学习。其次,这项目功能丰富,具有一个电子产品售卖商城系统该有的所有功能。
项目功能:此项目分为两个角色:普通用户和管理员。普通用户有登录注册、浏览商品信息、添加购物车、结算订单、查看个人信息、查看个人订单详情等等功能。管理员有管理所有商品信息、管理所有订单信息、管理所有用户信息、查看收益数据图表等等功能。
应用技术:SpringBoot + Vue + MySQL + MyBatis + Redis + ElementUI + 沙箱支付宝
运行环境:IntelliJ IDEA2019.3.5(项目压缩包中自带) + MySQL5.7(项目压缩包中自带) + Redis5.0.5(项目压缩包中自带) + JDK1.8 + Maven3.6.3(项目压缩包中自带)+ Node14.16.1(项目压缩包中自带)
6.2.项目运行截图:
七.超级福利再次分享
超值福利来了!🎉(资料整理不易,同学们给一键三连哦!)
为了帮助大家更好地学习和实践 Java 编程,特别为你准备了一份超实用的学习资源!🎁
这是一份完整的作品——“SpringBoot+Vue实现的仿小米电子产品售卖商城系统”源码,不仅包含详细的 讲解视频教程 和 开发文档,还附赠了 参考论文,让你在毕业设计或实际的项目开发中更加得心应手!💼✨
这个作品将带你从前端到后端,深入了解项目开发的流程,掌握实用的开发技能,帮助你把 Java 的知识真正学以致用!其中,还会教你怎么把系统对接到支付宝,实现整个支付流程
获取方式非常简单!👇只需在评论区留言或者私信我,也可以加我微信:RJ_xiaohui,告诉我你对学习 Java 或完成毕业设计的困惑和需求,我将第一时间与你联系,为你答疑结果,分享这份珍贵的资源!
还等什么?抓住这个机会,轻松提升编程能力,让你的学习和项目更进一步!🚀 快来领取吧! 🌟
记得 点赞👍、关注⭐、收藏📂,方便以后随时复习!