JAVA中的for循环使用方法

news2025/1/20 5:49:26

一. 循环结构

1. 概念

在学习Java里的循环之前,我们先来了解一下到底什么是循环,以及循环的作用。我们先来看下面这张图:

大家想一下,我们在400米的跑道上参加万米长跑,正常情况下要跑25圈,这25圈每一圈的跑步过程其实都是一样的,相当于是我们重复地转了25圈。跑完第25圈时,我们就会结束长跑,当然你也可以提前结束长跑。但如果你是一个超人,跑完25圈之后还继续跑下去,直到天荒地老,这就成了一个”死循环“了。

所以循环其实就是重复地完成某一件事情或者某一个操作,且该操作有开始和结束。我们在执行循环时,需要满足一定的循环条,反复执行特定的代码,当条件被打破时就要结束循环。这个循环操作不一定是完全一样的操作,而是类似的操作,比如我们可以循环的播放音乐、循环计算1000个学生的成绩等。

2. 实现方式

明确了循环的概念之后,我们还要知道有哪几种具体的循环实现方式。在Java中,实现循环的方式有:

for循环;

while循环;

do-while循环;

foreach循环

接下来壹哥分别针对这几种实现方式,结合代码案例教会大家怎么进行循环操作。

二. for循环

首先我们来学习一下Java里的for循环,这也是我们开发时最常用的一种循环形式。

1. 语法

for循环的基本语法如下:

for(①.声明并初始化循环变量;②.判断循环条件;④.改变循环变量值){ 
   
    //③.循环体
}

语法说明:

1. for循环最先执行初始化步骤。在这里可以声明一种类型,但可以初始化一个或多个循环控制变量,也可以是空语句;

2. 判断循环条件,检测布尔表达式的值。如果为 true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。且for循环的执行次数在执行前就已经是确定的。

3. 执行一次循环后,就会更新一次循环控制变量的值;

4. 再次检测布尔表达式,循环执行上面的过程。

2. 执行流程

根据上面的for循环语法,壹哥把for循环的执行流程给大家做个详细的解释:

1. 首先我们要在第①步声明并初始化一个变量,该操作在循环中只会执行一次;

2. 每次循环之前,在第②步判断循环条件是否成立,只有当条件为true才会执行,如果条件为false则结束循环;

3. 每次循环时,都会在③中执行循环体内的代码;

4. 每次循环结束后,会自动执行第④部分,改变变量的初始值;

5. for循环中①、②、④部分都可以省略不写,但必须存在两个”分号;“,也可以只写一部分;

6. 我们声明变量类型时,不一定非得是int,最后改变初始值也不一定非得是++;

7. for循环中支持嵌套循环。

根据上面的步骤,壹哥把重点步骤给大家总结如下:

①-->②-->③-->④-->②-->③-->④-->②-->③-->④-.....-②

如下图所示:

3. 基本案例

在了解了基本概念之后,壹哥再通过一个案例来给大家讲解。

3.1 案例一

需求:循环输出100遍 ”跟一一哥学java“

public class Demo02 {

	public static void main(String[] args) {
		//for循环,这里的i就是一个局部变量
		for( int i=0;  i<100;  i++) {
			
			System.out.println("跟一一哥学java,i="+i);
		}
	}

}

注意,上面for循环中定义的变量i就是一个局部变量哦!

3.2 案例二

需求:计算1-100的和,1+2+3+4+5+...+100

public class Demo02 {

	public static void main(String[] args) {
		// 计算1-100的和,1+2+3+4+5+...+100

        //定义一个用于存储”和“的局部变量
		int sum = 0;
        
		for (int i = 1; i <= 100; i++) {
			// i = 1;
			// sum=0+1;
			// i = 2;
			// sum= 1+2;
			sum = sum + i;
		}
		System.out.println("sum=" + sum);
	}

}

4. 循环嵌套

在循环中是支持嵌套的,也就是说一个for循环里面可以嵌套另一个for循环。有的小伙伴会很好奇,for循环中可以嵌套几个for循环?其实理论上可以嵌套很多,但为了效率和代码的可读性考虑,for循环的嵌套最好不要超过3层,否则效率真的很低,尤其是在大量循环时。

4.1 案例一

需求:打印出一个三角形,用“*”来表示。

public class Demo02 {

	public static void main(String[] args) {
		// for循环嵌套--打印出一个三角形,用“*”来表示
		for (int i = 1; i <= 5; i++) {
			//定义第2个局部变量j,j设置为<=i
			for (int j = 1; j <= i; j++) {
				//这里千万不要换行哦
				System.out.print(" * ");
			}
			//这里一定要换行哦
			System.out.println();
		}
	}

}

效果如下图所示:

4.2 案例二

需求:打印出九九乘法表。

public class Demo02 {

	public static void main(String[] args) {
		// for循环嵌套--打印出一个三角形,用“*”来表示
		for (int i = 1; i <= 5; i++) {
			//定义第2个局部变量j,j设置为<=i
			for (int j = 1; j <= i; j++) {
				//这里千万不要换行哦
				System.out.print(" * ");
			}
			//这里一定要换行哦
			System.out.println();
		}
	}

}

效果如下图所示:

5. 几种变形写法

以上的案例,是for循环的常用写法,但实际上for循环还有几种”变异“的写法。对这些变形的写法,大家可以掌握了解。

5.1 定义多个初始化变量

我们先来回顾一下for循环的基本语法:

for(①.声明并初始化循环变量;②.判断循环条件;④.改变循环变量值){ 
   
    //③.循环体
}

在for循环中,①中可以同时定义为多个变量i、j、k等,②中的判断条件不能使用多个变量,④中可以同时使用多个变量,并更改变量的值,案例如下所示:

public class Demo02 {

	public static void main(String[] args) {
		//①中可以同时定义为多个变量i,j,k等;
        //②中的判断条件不能使用多个变量;
        //④中可以同时使用多个变量,并更改变量的值
		for (int i = 0,j=0; i < 100; i++,j++) {
			System.out.println("跟一一哥学java,i=" + i+",j="+j);
		}
	}

}

5.2 简写形式

在for循行中,第①/②/④这几部分的内容都是可以省略简写的。

public class Demo02 {

	public static void main(String[] args) {
        //简写形式1:在第一部分中简写变量的声明
		//int i = 0;
		//for (; i < 100; i++) {
		//	System.out.println("跟一一哥学java,i=" + i);
     	//}

        //简写形式2:在第①和④中简写
		//int i = 0;
		//for ( ; i < 100; ) {
		//	i++;
		//	System.out.println("跟一一哥学java,i=" + i);
		//}

        //简写形式3,①/②/④都简写--->死循环
		int i = 0;
		for (;;) {
			i++;
			System.out.println("跟一一哥学java,i=" + i);
		}
	}

}

我们一定要注意,如果是第三种简写形式,把①/②/④都简写了,就会成为死循环,本段程序会一直不停地打印下去。此时我们可以点击控制台的”红色“按钮停止程序的运行,如下图所示。

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

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

相关文章

FPGA:逻辑运算及逻辑门

文章目录逻辑变量与逻辑函数逻辑运算基本逻辑运算及对应的逻辑门&#xff11;.与运算与逻辑举例状态表与真值表与逻辑符号与逻辑表达式与门电路&#xff12;. 或运算或逻辑举例电路状态表状态表与真值表或逻辑符号或逻辑表达式或门电路3. 非运算非逻辑举例电路状态表状态表与真…

Lichee_RV学习系列---认识Lichee Rv Dock、环境搭建和编译第一个程序

Lichee Rv Dock学习系列文章目录 文章目录Lichee Rv Dock学习系列文章目录前言一、认识Lichee RV1、D1-H 芯片2、Lichee RV开发板3、系统镜像二、Lichee RV 固件烧录1、要求基本硬件2、基本资料下载3、固件烧录在这里插入图片描述三、连接上开发板1、ADB方式连接a&#xff1a;A…

【ART-Pi学习FreeRTOS】使用STM32CubeIDE搭建开发环境

【ART-Pi】使用STM32CubeIDE搭建开发环境STM32CubeIDESTM32CubeIDE新建工程进入芯片选型界面HSE和LSE时钟源设置时钟系统&#xff08;时钟树&#xff09;配置Generate CodeSTM32CubeIDE STM32CubeIDE安装比较简单&#xff0c;这里略过&#xff0c;可以百度搜索相关教程 STM32…

Excel 中选择行的快捷方式有哪些

在处理不同类型的数据时,用户需要多次选择任意行或多行。在这种情况下,任何人都必须知道选择行的快捷方式。了解一些快捷键,如在Excel中选择行,使任何人都能熟练使用MS Excel,而且这对任何人以更智能的方式工作都很有帮助。当一个人开始使用快捷方式执行他的/她的工作时,…

Spring与SpringMVC的区别和联系是啥?

Spring Spring是一个开源容器框架&#xff0c;可以接管web层&#xff0c;业务层&#xff0c;dao层&#xff0c;持久层的组件&#xff0c;并且可以配置各种bean,和维护bean与bean之间的关系。其核心就是控制反转(IoC),和面向切面(AOP),简单的说就是一个分层的轻量级开源框架。 …

餐饮巨头被攻击的“致命”48小时

编者按数字化浪潮蓬勃兴起&#xff0c;企业面临的安全挑战亦日益严峻。腾讯安全近期将复盘2022年典型的攻击事件&#xff0c;帮助企业深入了解攻击手法和应对措施&#xff0c;完善自身安全防御体系。本篇是第八期&#xff0c;讲述了某餐饮巨头遭遇黑客多轮次攻击、全国点餐系统…

Linux ALSA 之六:ALSA ASoc 架构

ALSA ASoc 架构一、ASOC 由来二、从 HW 角度三、从 SW 角度四、重要数据结构关联图1、基于 Linux 3.0 数据结构图2、基于 Linux 4.0 数据结构图一、ASOC 由来 ASoC–ALSA System on Chip&#xff0c;是建立在标准 ALSA 驱动层上&#xff0c;为了更好地支持嵌入式处理器和移动设…

软件著作权申请注意事项

​软著申请需要哪些材料 ①企业申请&#xff1a;企业营业执照副本复印件&#xff08;加盖公章&#xff09;、身份证复印件&#xff08;正反面&#xff09;。 个人申请&#xff1a;个人身份证复印件。 ②软件设计/使用说明书文档一份 文档可根据要求提供&#xff0c;可以是软件…

c#使用配置文件

在我们开发软件的时候&#xff0c;有时候有很多的配置文件&#xff0c;可以把配置的参数保存到本地&#xff0c;那么肯定要对文件进行读和写的操作&#xff0c;使用SharpConfig可以很简单的实现这个功能。 下面是GitHub的介绍。 https://codeload.github.com/cemdervis/Sharp…

常见的锁策略

文章目录一、常见的锁策略乐观锁 vs 悲观锁轻量级锁 vs 重量级锁自旋锁 vs 挂起等待锁互斥锁 vs 读写锁公平锁 vs 非公平锁可重入锁 vs 不可重入锁二、CAS原子类实现自旋锁ABA问题一、常见的锁策略 我们这里所介绍到的锁策略&#xff0c;不仅仅是java中的&#xff0c;任何涉及…

异常检测-缺陷检测-论文精读PaDiM

Abstract 我们提出了一个新的 Patch 分布建模框架&#xff0c;在单类学习的设置下&#xff0c;PaDiM 同时检测和定位图像中的异常。PaDiM 利用一个预先训练好的卷积神经网络 (CNN) 进行 patch 嵌入&#xff0c;利用多元高斯分布得到正常类的概率表示。它还利用了 CNN 的不同语…

基础1-用于癫痫发作预测的卷积门控递归神经网络

A Convolutional Gated Recurrent Neural Network for Epileptic Seizure Prediction ABSTRACT 在本文中&#xff0c;我们提出了一种卷积门控递归神经网络(CGRNN)来预测癫痫发作&#xff0c;基于从EEG数据中提取的代表信号的时间方面和频率方面的特征。使用波士顿儿童医院收集…

priority_queue的介绍及使用(18)

目录 1、priority_queue的介绍 2、priority_queue的使用 3、priority_queue的模拟实现 1、简单实现一个大堆的 2、带仿函数的 1、初识仿函数 2、priority_queue带仿函数版本 3、其他 1、priority_queue的介绍 1、优先队列是一种容器适配器&#xff0c;根据严格的弱排序…

Unity 3D 物理引擎简介 || Unity 3D 物理材质|| Unity 3D 力(AddForce)

Unity 3D 物理引擎简介 早期的游戏并没有强调物理引擎的应用&#xff0c;当时无论是哪一种游戏&#xff0c;都是用极为简单的计算方式做出相应的运算就算完成物理表现&#xff0c;如超级玛丽和音速小子等游戏。 较为常见的物理处理是在跳跃之后再次落到地上&#xff0c;并没有…

百万级数据的导出解决方案

一、传统POI的的版本优缺点比较首先我们知道POI中我们最熟悉的莫过于WorkBook这样一个接口&#xff0c;我们的POI版本也在更新的同时对这个几口的实现类做了更新&#xff1b;HSSFWorkbook : 这个实现类是我们早期使用最多的对象&#xff0c;它可以操作Excel2003以前&#xff08…

SAP 系统内核版本详解

前言&#xff1a;之前两篇简单介绍了ABAP 7.40的新特性&#xff0c;那么有的时候会有这样的情况&#xff0c;根据新特性写代码的时候校验会不通过&#xff0c;这又是为啥呢&#xff1f;会不会跟SAP的版本有关系呢&#xff1f; 那么&#xff0c;首先我们就来看一下在SAP系统中如…

基于TC397的Bootloader开发过程中遇到的问题记录

问题11 现象&#xff1a;刷新流程结束之后上位机通过22服务AFFC读取刷新计数时&#xff0c;刷新计数会偶发地置12 分析思路&#xff1a;尝试用单步调试的方法复现该现象&#xff0c;程序中涉及到刷新计数的更新有两处&#xff0c;一是在34服务中擦flash前&#xff0c;二是在31服…

【数据结构】栈及其经典面试题详解

目录前言一、栈的介绍二、数据类型重定义三、栈的结构四、栈中的常见操作五、测试栈六、栈的常见面试题前言 前面学习的线性表中包含顺序表和链表&#xff0c;这两种数据结构允许在任意位置进行插入和删除&#xff0c;那么有没有一种数据结构是不能在任意位置进行插入删除&…

全面解读MinION纳米孔测序技术及应用

全面解读MinION纳米孔测序技术及应用 link&#xff1a;https://www.seqchina.cn/467.html 【测序中国】 paper&#xff1a;The Oxford Nanopore MinION: delivery of nanopore sequencing to the genomics community https://pubmed.ncbi.nlm.nih.gov/27887629/ 纳米孔测序技术…

知识蒸馏 Knowledge distillation(学习笔记)

知识蒸馏概述 蒸馏&#xff1a;把大的 复杂的东西变成小的纯净的东西 在知识蒸馏中 大的模型为 教师模型&#xff08;teacher&#xff09;臃肿 集成 牛逼 复杂的 小的 为 学生模型&#xff08;student&#xff09;小的精干的 轻量化的 这里有一个知识的迁移 因为落地实…