【理解 Java 中的 for 循环】

news2024/11/18 21:33:25

理解 Java 中的 for 循环

在这里插入图片描述

for 循环是 Java 中用于迭代的常用控制结构,它可以帮助我们重复执行某段代码,直到满足特定条件。本文将介绍 for 循环的基本语法、执行流程、注意事项及一些练习。

基本语法

for 循环的基本语法如下:

for (循环变量初始化; 循环条件; 循环变量迭代) {
    循环操作(可以多条语句);
}

执行顺序

for 循环中,执行顺序如下:

  1. 初始化:设置循环变量的初始值。
  2. 条件判断:判断循环条件是否为 true
  3. 执行循环体:如果条件为 true,执行循环体内的操作。
  4. 变量迭代:执行完循环体后,更新循环变量的值。
  5. 重复:重复步骤 2-4,直到条件为 false
    在这里插入图片描述

示例代码

下面是一个简单的示例,输出 09 的数字:

public class For01 {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            System.out.println("Yhame 在学习java!" + i);
        }
    }
}

执行流程分析

在上述代码中,循环变量 i0 开始,每次循环后自增 1,直到 i 不再小于 10,循环结束。在这里插入图片描述

注意事项和细节说明

  1. 布尔值for 循环条件必须返回一个布尔值。
  2. 初始化和迭代for 循环中的初始化和变量迭代可以在其他地方定义,但分号不能省略。
  3. 多条初始化和迭代:可以在循环中使用多条初始化语句(类型相同),用逗号分隔;迭代也同理。
  4. 内存分析法:在使用 for 循环时,合理分析内存使用可以提高程序性能。

代码示例

以下示例展示了如何在 for 循环外部初始化变量,并使用死循环的方式:

public class ForDetail {
    public static void main(String[] args) {
        int i = 1;  // 循环变量初始化
        for (; i <= 10; ) {
            System.out.println("Hello " + i);
            i++;
        }
        System.out.println("i = " + i);  // 输出 i = 11

        // 补充:无限循环
        // int j = 0;
        // for (;;) {
        //     System.out.println("ok" + (j++));
        // }

        int count = 3;
        for (int i = 0, j = 0; i < count; i++, j += 2) {
            System.out.println("i = " + i + "; j = " + j);
        }
    }
}

在这里插入图片描述


练习题

练习一

打印 1 ~ 100 之间所有是 9 的倍数的整数,统计个数及总和。

[化繁为简] [先死后活]

  • 化繁为简 : 即将复杂的需求,拆解成简单的需求, 逐步完成
  • 先死后活 : 先考虑固定的值,然后转成可以灵活变化的值
        // 化繁为简  : 即将复杂的需求,拆解成简单的需求, 逐步完成
		// 先死后活 : 先考虑固定的值,然后转成可以灵活变化的值
		
			//(1) 完成输出 1 - 100 的值
			//(2) 在输出的过程中,进行过滤,只输出9 的倍数 i % 9== 0
			// (3) 统计输出个数 ,定义一个变量 int count = 0; 当条件满足的时 count ++ ;

public class ForExercise {
    public static void main(String[] args) {
        int count = 0;
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            if (i % 9 == 0) {
                System.out.println("是9的倍数的整数 = " + i);
                count++;
                sum += i;
            }
        }
        System.out.println("一共有 " + count + " 个数");
        System.out.println("总和为 " + sum);
    }
}
       

结果

在这里插入图片描述

改进练习一 (编程思想)

将初始值和结束值 赋值 为变量,增强代码的灵活性:

//(1) 为了适应更好的需求,把范围的开始的值和结束的值,做成 变量
// 	(2) 还可以进一步把 倍数也设置成一个变量  int t = 9;

public class ForExercise {
    public static void main(String[] args) {
        int count = 0;
        int sum = 0;
        int start = 1;
        int end = 100;
        int t = 9;
        for (int i = start; i <= end; i++) {
            if (i % t == 0) {
                System.out.println("符合整数 = " + i);
                count++;
                sum += i;
            }
        }
        System.out.println("一共有 " + count + " 个数");
        System.out.println("总和为 " + sum);
    }
}

练习二

输出 010 的数字及其对应的和为 10 的组合。

    // 先死后活
	//(1)先输出加数 0 - 10
	//(2)后面应该被加数的都是 10 -i

public class ForExercise02 {
    public static void main(String[] args) {
        int n = 10;
        for (int i = 0; i <= n; i++) {
            System.out.println(i + " + " + (n - i) + " = " + n);
        }
    }
}

在这里插入图片描述


结论

for 循环是 Java 编程中的基础和重要组成部分。通过灵活的控制结构,可以轻松实现复杂的逻辑。希望本文能帮助你更好地理解和应用 for 循环。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2169308.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux下的基本指令/命令(一)

目录 基本命令 1. Is命令/指令: 罗列当前目录下指定的文件或者目录. 2. pwd命令&#xff1a; 查看当前工作的路径 3. cd命令&#xff1a; 切换到指定路径下。 只能切换到目录中 4. tree命令: 树状显式目录 使用前要输入命令 yum install -y tree &#xff0c;用来安装一个…

数组模拟邻接表存图

图的定义 图&#xff08;graph&#xff09;是一种非线性数据结构&#xff0c;由顶点和边组成。我们可以将图 抽象地表示为一组顶点和一组边的集合。G(V,E) 图分为有向图和无向图&#xff0c;下图带箭头为有向图&#xff0c;无箭头为无向图 我们可以用两种方式来表示图&#x…

有点快要跟不上时代的感觉

团队的群里面有一个同事突然问了下&#xff0c;下面的这个 JavaScript 如何进行优化 var startIndex (start undefined || start null) ? null : start[0].Value;看上面的代码就是典型的判断和返回的问题。 如果是要调试的话也不是做不出来&#xff0c;但可能要花点时间&a…

【Java】—— 多线程:线程的创建方式3、4___实现Callable与线程池

目录 8.1 新增方式一&#xff1a;实现Callable接口 8.2 新增方式二&#xff1a;使用线程池 8.1 新增方式一&#xff1a;实现Callable接口 与使用Runnable相比&#xff0c; Callable功能更强大些 相比run()方法&#xff0c;可以有返回值 方法可以抛出异常 支持泛型的返回值&…

音视频整体解码流程和同步流程

目录 1. 整体解码流程1. 初始化 FFmpeg2. 打开媒体文件3. 查找解码器4. 打开解码器5. 读取和解码数据6. 处理解码后的帧7. 释放资源 2. 音视频同步整体流程1. 解复用媒体流2. 解码3. 以音频为时钟源进行音视频同步的策略4. 缓冲区设计 现在先说大体流程&#xff0c;不分析代码 …

网络原理 - TCP/IP

文章目录 传输层UDP协议TCP协议TCP协议的核心机制确认应答机制超时重传机制连接管理三次握手四次挥手 滑动窗口流量控制拥塞控制延迟应答捎带应答面向字节流粘包问题 异常情况 小结 网络层IP协议IP地址不够用的问题一、动态分配IP地址二、 NAT机制(网络地址映射)三、使用IPv6 地…

【HarmonyOS】自定义圆点进度条

【HarmonyOS】实现一个自定义带圆点的进度条效果。 方案就是做一个圆角组件&#xff0c;然后利用rotate旋转&#xff0c;至于动画效果&#xff0c;我查了一下文档&#xff0c;只要设置enableSmoothEffect:false&#xff0c;就可以关闭动画&#xff0c;然后自己开个定时器&#…

如何使用代理IP解决反爬虫问题

在网络爬虫的世界里&#xff0c;反爬虫机制就像是守卫城池的士兵&#xff0c;时刻准备着抵御外来的“入侵者”。为了突破这些守卫&#xff0c;代理IP就像是你的隐形斗篷&#xff0c;帮助你在网络世界中自由穿梭。今天&#xff0c;我们就来聊聊如何使用代理IP解决反爬虫问题。 …

【CMake】一、CMake 介绍

CMake 基础介绍 1. CMake 介绍2. CMake 安装3. 入门样例 - Hello-world 工程 1. CMake 介绍 CMake 是一个开源、跨平台的构建系统&#xff0c;主要用于软件的构建、测试和打包。 CMake 使用平台无关的配置文件 CMakeLists.txt 来控制软件的编译过程&#xff0c;并生成适用于不…

叉车司机信息权限采集系统,保障与优化叉车运输网络的安全

叉车司机信息权限采集系统可以通过监控司机的行车行为和车辆状况&#xff0c;实时掌握车辆位置和行驶路线&#xff0c;从而提高运输安全性&#xff0c;优化运输网络&#xff0c;降低事故风险。同时&#xff0c;该系统还可以通过对叉车司机信息和行车数据的分析&#xff0c;优化…

LM393 电压比较器和典型电路

一、介绍 LM393内部包括有两个独立、高精度电压比较器 组成的集成电路&#xff0c;失调电压低&#xff0c;最大为2.0mV。专为获得宽电压范围、单电源供电而设计&#xff0c;也可以双电源供电。而且无论电源电压大小&#xff0c;电源消耗的电流都很低。即使是单电源供电&#xf…

数据集-目标检测系列-兔子检测数据集 rabbit >> DataBall

数据集-目标检测系列-兔子检测数据集 rabbit >> DataBall 数据集-目标检测系列-兔子检测数据集 rabbit 数据量&#xff1a;8k 想要进一步了解&#xff0c;请联系。 DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#xff0c;持续增加…

【重学 MySQL】三十九、Having 的使用

【重学 MySQL】三十九、Having 的使用 基本语法示例示例 1&#xff1a;使用 HAVING 过滤分组示例 2&#xff1a;HAVING 与 WHERE 的结合使用 注意点WHERE 与 HAVING 的对比基本定义与用途主要区别示例对比总结 在 MySQL 中&#xff0c;HAVING 子句主要用于对 GROUP BY 语句产生…

进阶SpringBoot之 Dubbo-admin 安装测试

Dubbo 是一个 jar 包&#xff0c;本身并不是一个服务软件 它能让 Java 程序连接到 Zookeeper&#xff0c;并利用 Zookeeper 消费、提供服务 Dubbo-admin 是一个可视化的监控程序&#xff0c;可以让用户更好的管理监控众多的 Dubbo 服务 GitHub dubbo-admin 在项目目录下打包…

MyBatis<foreach>标签的用法与实践

foreach标签简介 实践 demo1 简单的一个批量更新&#xff0c;这里传入了一个List类型的集合作为参数&#xff0c;拼接到 in 的后面 &#xff0c;来实现一个简单的批量更新 <update id"updateVislxble" parameterType"java.util.List">update model…

代码随想录算法训练营第56天 | 1、冗余连接,2、冗余连接II

目录 1、冗余连接 2、冗余连接II 1、冗余连接 题目描述 有一个图&#xff0c;它是一棵树&#xff0c;他是拥有 n 个节点&#xff08;节点编号1到n&#xff09;和 n - 1 条边的连通无环无向图&#xff08;其实就是一个线形图&#xff09;&#xff0c;如图&#xff1a; 现在在…

UNI-SOP应用场景(1)- 纯前端预开发

在平时新项目开发中&#xff0c;前端小伙伴是否有这样的经历&#xff0c;hi&#xff0c;后端小伙伴们&#xff0c;系统啥时候能登录&#xff0c;啥时候能联调了&#xff0c;这是时候往往得到的回答就是&#xff0c;再等等&#xff0c;我们正在搭建系统呢&#xff0c;似曾相识的…

Marp精华总结(一)基础篇

概述 Marp是一个基于MarkDown快速编写幻灯片的工具&#xff0c;其可以基于VScode环境&#xff0c;实现MarkDown幻灯的编写和预览。Marp并不难&#xff0c;但是目前的教程还比较零散&#xff0c;而且很多细节和高级内容并没有完全展示&#xff0c;我自己是很早就体验到了Marp的…

C语言进阶之泛型列表(Generic List)

1.前言 数据结构是需要泛型的,而在C语言中实现泛型就只能去用指针魔法了,来跟我一起实现吧!所有代码经测试未发现明显bug,可放心食用. 2.代码截图展示 1.list.h 2.main.c 3.list.c 3.结语 这次分享的列表采用动态数组的方式实现,下次我会去用链表实现,两种实现方式各有优劣,希…

通信工程学习:什么是VIM虚拟化基础设施管理器

VIM:虚拟化基础设施管理器 VIM(Virtualized Infrastructure Manager)虚拟化基础设施管理器,是一种负责管理和控制虚拟化环境中所有虚拟资源的工具和系统。以下是关于VIM虚拟化基础设施管理器的详细解释: 一、定义与功能 VIM是网络功能虚拟化(NFV)架构中…