教妹学Java(十五):for循环详解

2023-11-11

你好呀,我是沉默王二,一枚颜值与才华俱在的程序员。本篇教程通过我和三妹对话的形式来谈一谈“for、while、do-while 循环之间的差别,以及重点介绍一下 for 循环。while、do-while 会在接下来的教程中单独介绍”。

教妹学 Java,没见过这么又去的标题吧?“语不惊人死不休”,没错,标题就是这么酷炫,毕竟面向对象编程。专栏现在定价只要 9.9 元,我在想,CSDN 这是赔本生意啊,定价也太低了,趁早买,买到的同学我只能说你赚到了,后面 CSDN 肯定会涨价。

下面就由我来介绍一下故事的背景吧。

我有一个漂亮如花的妹妹(见上图),她叫什么呢?我想聪明的读者都能猜得出:沉默王三,没错,年方三六。父母正考虑让她向我学习,做一名正儿八经的 Java 程序员。我期初是想反抗的,因为程序员这行业容易掉头发。但家命难为啊,与其反抗,不如做点更积极的事情,写点有趣的文章,教妹妹如何更快地掌握 Java 这门编程语言。毕竟程序员还算得上高薪(都是拿命换的啊)。

“二哥,今天我们重点学习的内容是‘for 循环’,对吧?”

“是的,三妹。for 循环是 Java 中的三大循环语句之一,它们使用的场景各不相同,可以根据下图比较一下。”

再来个表格感受一下。

比较方式 for while do-while
简介 for 循环的次数是固定的 while 循环的次数是不固定的,并且需要条件为 true do-while 循环的次数也不固定,但会至少执行一次循环,无聊条件是否为 true
何时使用 循环次数固定的 循环次数是不固定的 循环次数不固定,并且循环体至少要执行一次
语法 for(init:condition;++/–) {// 要执行的代码} while(condition){// 要执行的代码} do{//要执行的代码}while(condition);

01、普通的 for 循环

普通的 for 循环可以分为 4 个部分:

1)初始变量:循环开始执行时的初始条件。

2)条件:循环每次执行时要判断的条件,如果为 true,就执行循环体;如果为 false,就跳出循环。当然了,条件是可选的,如果没有条件,则会一直循环。

3)循环体:循环每次要执行的代码块,直到条件变为 false。

4)自增/自减:初识变量变化的方式。

来看一下普通 for 循环的格式:

for(初识变量;条件;自增/自减){  
// 循环体
}  

画个流程图:

来个示例:

public class ForExample {
    public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            System.out.println("沉默王三好美啊");
        }
    }
}

输出:

沉默王三好美啊
沉默王三好美啊
沉默王三好美啊
沉默王三好美啊
沉默王三好美啊

“哎呀,二哥,你真的是变着法夸我啊。”

“非也非也,三妹,你看不出我其实在夸我自己吗?循环语句还可以嵌套呢,这样就可以打印出更好玩的呢,你要不要看看?”

“好呀好呀!”

“看好了啊。”

public class PyramidForExample {
    public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            for (int j = 0;j<= i;j++) {
                System.out.print("❤");
            }
            System.out.println();
        }
    }
}

打印出什么玩意呢?

❤
❤❤
❤❤❤
❤❤❤❤
❤❤❤❤❤

“哇,太不可思议了,二哥。”

“嘿嘿。”

02、for-each

for-each 循环通常用于遍历数组和集合,它的使用规则比普通的 for 循环还要简单,不需要初始变量,不需要条件,不需要下标来自增或者自减。来看一下语法:

for(元素类型 元素 : 数组或集合){  
// 要执行的代码
}  

来看一下示例:

public class ForEachExample {
    public static void main(String[] args) {
        String[] strs = {"沉默王二", "一枚有趣的程序员"};

        for (String str : strs) {
            System.out.println(str);
        }
    }
}

输出:

沉默王二
一枚有趣的程序员

“呀,二哥,你开始王哥卖瓜了啊。”

“嘿嘿,三妹,你这样说哥会脸红的。”

03、无限 for 循环

“三妹,你想不想体验一下无限 for 循环的威力,也就是死循环。”

“二哥,那会有什么样的后果啊?”

“来,看看就知道了。”

public class InfinitiveForExample {
    public static void main(String[] args) {
        for(;;){
            System.out.println("停不下来。。。。");
        }
    }
}

输出:

停不下来。。。。
停不下来。。。。
停不下来。。。。
停不下来。。。。

一旦运行起来,就停不下来了,除非强制停止。

本篇文章为《教妹学Java》专栏的第十五篇文章,是不是轻松又活泼,学技术再也不枯燥了,对吧?购买专栏的同学都是冲着二哥名声来的,我只能说你很有眼光。

这成就,没几个人能比得上吧?看到这里的同学都是购买了本专栏的,为表谢意,你可以添加我的个人微信【qing_geee】,有任何学习上的问题都可以随时向我请教,本号的坑位所剩无几,手慢无。另外,我有几个高质量的交流群,我会不定期在群里分享学习资源,福利等等,感兴趣的可以说下我邀请你!

上一篇回顾:教妹学Java(十四):switch 语句详解

PS:本篇文章中的示例代码已经同步到码云,传送门~

别瞅了,点赞就对了,你最美你最帅

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

教妹学Java(十五):for循环详解 的相关文章

随机推荐

  • 特征提取-特征工程

    目录 1 定义 2 字典特征提取 3 英文 本特征提取 4 中文 本特征提取 1 定义 将任意数据 如 本或图像 转换为可 于机器学习的数字特征 2 字典特征提取 from sklearn feature extraction import
  • 【算法】树状数组维护总结

    本文仅对树状数组的使用作一个总结 并非讲解 这里的操作都对长度为 n n n 的数组 a a a 进行操作 单点修改 区间查询 暴力做法 修改
  • java使用原始套接字技术进行数据包截获_Linux零拷贝技术,看完这篇文章就懂了...

    本文讲解 Linux 的零拷贝技术 云计算是一门很庞大的技术学科 融合了很多技术 Linux 算是比较基础的技术 所以 学好 Linux 对于云计算的学习会有比较大的帮助 本文借鉴并总结了几种比较常见的 Linux 下的零拷贝技术 相关的引
  • python的pyecharts绘制各种图表详细(代码)

    环境 pyecharts库 echarts countries pypkg echarts china provinces pypkg echarts china cities pypkg 数据 2018年4月16号的全国各地最高最低和天气
  • 5.5js

    1 JavaScript简介 什么是JavaScript JavaScript 是 种客户端脚本语 脚本语 是 种轻量级的编程语 JavaScript 通常被直接嵌 HTML 由浏览器解释执 JavaScript 是 种解释性语 就是说 代
  • Deepin 手动分区记录

    起初安装Deepin 采用手动分区 总是安装失败 经过以下分区就成功安装了 efi 分区 默认300m boot 分区 默认 512m 交换分区 swap 等于你的内存大小 分区 15G home 分区剩余全部容量 home可以设置也可以不
  • brpc组件bvar源码解析(三)Variable、Reducer和Adder

    1 Variable类 Variable是所有bvar的基类 是一个纯虚类 拥有的唯一的成员变量是 name Variable类中的接口分为几类 描述相关的 子类实现纯虚函数describe 目的是将bvar的值写入ostream get
  • 验证码倒计时

    获取验证码倒计时 return second 120 getCodeFn let flag true if this user phone this http isPhone this user phone false this http
  • 斐讯 K2 路由器 无线中继 无线扩展设置教程图文

    斐讯 K2 路由器无线扩展设置教程 1 连接上k2路由器无线网络 2 登录k2路由器管理页面 192 168 2 1 3 上网设置 4 无线设置 5 设置k2无线扩展功能 6 选择主路由器无线网络 7 设置无线网络信息wifi名称 wifi
  • 详解redis的哨兵模式(1)

    目录 1 背景 2 实现过程 2 1 初始化服务器 2 2 将普通Redis服务器使用的代码替换成Sentinel专用代码 2 3初始化Sentinel状态 2 4初始化sentinel状态的masters属性 2 5创建连向主服务器的网络
  • 视频重编码为h265重新封装MP4并截断

    MP4 重编码重封装 分辨率和编码格式 转为h265 调整 XFormat h pragma once include
  • 抽象工厂模式-Abstract Factory Pattern

    抽象工厂模式 Abstract Factory Pattern 抽象工厂模式 Abstract Factory Pattern 提供一个创建一系列相关或相互依赖对象的接口 而无须指定它们具体的类 抽象工厂模式又称为Kit模式 它是一种对象创
  • SQL Server为数据表增加列(字段)的SQL语句

    下面是一个示例 ALTER TABLE TableName ADD NewField DECIMAL 18 2 NOT NULL DEFAULT 0 上面的代码为 TableName 表增加了一个名为 NewField 的列 字段 其数据类
  • 8.28网络编程作业

    TCP服务器端 include
  • Java多线程 - 线程状态

    线程状态 五个状态 新生 就绪 运行 死亡 阻塞 停止线程 不推荐使用JDK提供的stop destroy 方法 已弃用 推荐线程自己停止 建议用一个标志位进行终止变量 到flag false 则终止线程运行 public class St
  • GDB 多线程调试

    http hi baidu com hcq11 blog item 9f5bfc6e696209d680cb4a25 html http hi baidu com litto blog item 759389dd198111375882dd
  • Win10使用.bat命令 获取本机设备信息/MAC信息/IP信息,转存为txt文件并保存至目标目录

    精简版 echo off title kotori poi color 0a echo 计算机S N码 gt dp0systemcheck txt wmic bios get serialnumber find v SerialNumber
  • 大数据学习——2PC算法

    分布式下数据一致性问题 对于一个将数据副本分布在不同得分布式下的系统来说 如果对一个节点的数据进行更新 但是其他节点的数据却没有进行相应的更新 于是在读取其他节点的数据时 便不是最新的数据 即脏数据 这就是典型的数据不一直问题 为解决这个问
  • (5)unix套接字sendmsg消息返回权限错误(EPERM)

    Unix套接字sendmsg消息返回权限错误 Author onceday date 2023年8月16日 解决linux设备上unix套接字sendmsg的一种错误情景 1 问题 unix套接字有一种udp类传输 即数据报服务 这个套接字
  • 教妹学Java(十五):for循环详解

    你好呀 我是沉默王二 一枚颜值与才华俱在的程序员 本篇教程通过我和三妹对话的形式来谈一谈 for while do while 循环之间的差别 以及重点介绍一下 for 循环 while do while 会在接下来的教程中单独介绍 教妹学