初识Java 3-1 控制流

news2024/10/6 5:57:56

目录

if-else语句

迭代语句

for循环

for-in语法

return

break和continue

标签机制

switch


 

本笔记参考自: 《On Java 中文版》


        Java不允许将数字作为布尔值使用,若需要在一些条件语句中使用一个非布尔值,比如if(a),那么就需要使用条件表达式将其的结果转换为布尔值,像if(a != 0)一样。

if-else语句

        作为最基本的控制程序流程的方式,if-else语句有两种使用方式:

  1. if(Boolean-expression)
        statement
  2. if(Boolean_expression)
        statement
    else
        statement

        其中,布尔表达式必须生成一个布尔结果,而statement是用分号进行结尾的简单语句。

public class IfElse {
    static int result = 0;
    static void test(int testval, int target) {
        if (testval > target)
            result = +1;
        else if (testval < target)
            result = -1;
        else
            result = 0;
    }

    public static void main(String[] args) {
        test(10, 5);
        System.out.println(result);
    }
}

        上述程序运行的结果是1

迭代语句

        whiledo-whilefor用以控制循环,被称为迭代语句。迭代语句会重复执行,直到起控制作用的布尔表达式的结果变为false

        其中,while循环的格式如下:

while(Boolean-expression)
    statement

---

        do-while循环和while循环的差别在于do-while中的语句至少会执行一次,无关乎其布尔表达式的结果是否为truedo-while的格式如下:

do
    statement
while(Boolean-expression)

    一般,while循环会比do-while循环更常用。

for循环

        for循环或许是最常用的迭代形式,在第一次迭代开始前,会先进行初始化,再进行条件测试。for循环的格式如下:

for(initialization; Boolean-expression; step)

        for循环由三部分组成:初始化(initialization)、布尔表达式(Boolean-expression)和步进(step)。在每次迭代前,for循环都会测试布尔表达式,若结果为false,就终止循环,否则执行以此步进。

        在这里需要提到逗号操作符,因为在Java中,唯一会用到这一操作符的地方就是for循环的控制表达式,这些语句会从左到右依次执行,例如:

public class CommaOperator {
    public static void main(String[] args) {
        for(int i = 1, j = i + 10; i < 5; i++, j = i * 2){
            System.out.println("i = " + i + ", j = " + j);
        }
    }
}

        程序执行的结果如下:

for-in语法

        Java在后来引入了for-in这一更为简洁的for语法,这一语法可被用于数组和容器for-in语句会自动生成每一项元素,这就省去了一些计数的环节。例如从一个数组中提取出其中的每一项元素:

import java.util.*;

public class ForInFloat {
    public static void main(String[] args) {
        Random rand = new Random(47);
        float[] f = new float[10];
        for (int i = 0; i < 10; i++)
            f[i] = rand.nextFloat();
        for (float x : f)
            System.out.println(x);
    }
}

        程序执行的结果如下:

        在上述程序中,for (float x : f)语句定义了一个float类型的变量x,然后将数组f中的每一项元素按顺序赋给x

    任何返回了数组的方法都可以使用for-in

return

        Java中有多个关键字表示无条件分支,包括returnbreakcontinue和一种跳转到标签语句的方式(类似于goto)。

        return关键字有两个作用:指定并返回一个方法的结果值(值不存在时返回void),并退出当前方法。若一个返回了void的方法中没有return语句,那么在该方法的结尾处会有一个隐含的return

break和continue

        在任何迭代语句中,都可以使用breakcontinue来控制循环流程。其中:

  • break:退出循环;
  • continue:停止当前迭代,返回循环开始位置,执行下一次的迭代。

        例如:

public class BreakAndContinue {
    public static void main(String[] args) {
        for (int i = 0; i < 100; i++) {
            if (i == 74) // 当i到达74时,中断循环,因此i不会到达100
                break;
            if (i % 9 != 0) // 只有能被9整除的数字才会被打印
                continue;
            System.out.print(i + " ");
        }
        System.out.println();
    }
}

        程序执行的结果如下:

标签机制

        编程语言中从一开始就存在goto关键字。但在大多情况下,这一关键字是被滥用的。尽管在Java中,goto是一个保留字,但是Java中没有使用它。取而代之的,Java中有一些类似的跳转的操作,这种操作使用了标签机制。其形式如下,是以冒号结尾的标识符:

label1:

        Java为这一机制设置了许多限制。在Java中,唯一可以使用标签的位置是正好在迭代语句之前。使用标签的原因是为了中断深层次的循环。例如:

label1:
outer-iteration {
    inner-iteration {
        // ...
        break; // 只能中断内层(inner)的循环,而会返回外层的循环
        // ...
        continue; // 只能结束一次内层的迭代,然后会进入下次的内层迭代
        
        // ...
        continue label1; // 同时中断内部与外部迭代,从label1的位置重新进入外层迭代,继续执行
        //...
        break label1; // 中断所有迭代,跳出外层(outer)循环
    }
}

        若没有这种标签,那么breakcontinue就只能控制当前所处层面的循环,但使用了标签后,breakcontinue就能控制标签所指循环的流程了。另外,如果要在中断循环时结束方法,可以直接使用return

switch

        switch,即选择语句。可以根据整数表达式的值,从多个代码片段中选取一个进行执行。其格式类似于:

switch(selector) {
    case value1: 
        statement;
        break;
    case value2: 
        statement;
        break;
    case value1: 
        statement;
        break;
    // ...
    default:
        statement;
}

    在Java 7之前,switch的选择器(selector)只能使用整数值,像int或者char这样。但从Java 7开始,switch的选择器也允许使用字符串进行多路选择。

public class StringSwitch {
    public static void main(String[] args) {
        String color = "red";
        switch (color) {
            case "red":
                System.out.println("RED");
                break;
            case "yellow":
                System.out.println("YELLOW");
                break;
            case "blue":
                System.out.println("BLUE");
                break;
            default:
                System.out.println("Unknown");
        }
    }
}

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

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

相关文章

美团北极星榜单,服务零售的医美新样本

事实证明&#xff0c;任何时候&#xff0c;人们对美的追求都是刚需&#xff0c;只是有时候被压抑了。 德勤中国的《中国医美行业2023年度洞悉报告》&#xff08;以下简称“报告”&#xff09;显示&#xff0c;中国医美市场规模预计在2023年超过2000亿元&#xff0c;实现20%增速…

残差网络、Dropout正则化、Batch Normalization浅了解

残差网络&#xff1a; 为什么需要残差网络&#xff1a; 残差网络的目的是为了解决深度神经网络在训练过程中遇到的退化问题&#xff0c;即随着网络层数的增加&#xff0c;训练集的误差反而增大&#xff0c;而不是过拟合。残差网络的优点有以下几点&#xff1a; 残差网络可以…

上门服务系统|上门服务软件开发|上门服务改善生活质量的便捷之选

随着现代生活的快节奏和社交距离的需求&#xff0c;我们越来越渴望能够以更便捷、高效的方式获得我们所需的服务。为了满足这一需求&#xff0c;我们公司开发了一款创新的上门服务系统&#xff0c;旨在将便利与质量相结合&#xff0c;为您提供无与伦比的体验。 无论您是忙碌的白…

惠普NS1020激光打印机碳粉警告提示及添加碳粉方法

本文也适用于惠普NS1020、1020c 和 1020w 系列打印机。 通过碳粉量指示灯检查碳粉量。 如果碳粉量是满的或指示器显示 1&#xff0c;可选择添加一个碳粉或者忽略不添加。如果碳粉量指示灯显示 2或 2 和碳粉量警告感叹号图标 &#xff0c;则表示碳粉量不足或严重不足&#xff0…

ORACEL 账户被锁定、无监听

现象1&#xff1a;oracle数据库账号被锁定 OA页面情况&#xff1a;OA系统可以正常登录&#xff0c;但是表单查不出数据 PL SQL 连接情况&#xff1a;有明确的提示&#xff0c;oracle账号被锁。 Tomcat控制台情况&#xff1a;有明确提示账号被锁 解决办法 在命令行中输入就可…

批量身份证图片转Excel,核验真伪,保留头像,只需一款软件

你是否曾经遇到过需要将大量员工的身份证图片转化为Excel表格的情况&#xff1f;这种情况可能会让你感到无从下手。但是&#xff0c;现在有了金鸣表格文字识别电脑客户端&#xff0c;一切都将变得轻松便捷。 首先&#xff0c;你只需要前往金鸣识别官网下载并安装金鸣表格文字识…

企业网络设备监控工具

如今&#xff0c;组织在运营业务方面面临着日益激烈的竞争和日益复杂的问题&#xff0c;在这种情况下&#xff0c;拥有以最高效率运行的网络基础设施不再是奢侈品。相反&#xff0c;对于任何希望在各自领域成为领跑者的组织来说&#xff0c;这是必要的。网络基础设施中每个网络…

python爬虫14:总结

python爬虫14&#xff1a;总结 前言 ​ python实现网络爬虫非常简单&#xff0c;只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点&#xff0c;方便以后复习。 申明 ​ 本系列所涉及的代码仅用于个人研究与讨论&#xff0c;并不会对网站产生不好…

查看edge浏览器插件的安装位置

C:\Users\zhang\AppData\Local\Microsoft\Edge\User Data\Default\Extensions 这是我的目录&#xff0c;把中间的的替换成你的电脑用户名就可以了 你也可以先输入目录的部分名称&#xff0c;下拉找对应的目录

docker部署前端项目保姆级教程

本地启动docker&#xff08;有不会启动的吗&#xff1f;下载docker&#xff08;小海豚&#xff09;双击起来就行&#xff09; 准备阿里云账号&#xff08;免费&#xff09; 没有就去注册一个&#xff0c;记住密码后面要用到 官网地址&#xff1a;阿里云登录 - 欢迎登录阿里云…

基于OpenCV+LPR模型端对端智能车牌识别——深度学习和目标检测算法应用(含Python+Andriod全部工程源码)+CCPD数据集

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境OpenCV环境Android环境1. 开发软件和开发包2. JDK设置3. NDK设置 模块实现1. 数据预处理2. 模型训练1&#xff09;训练级联分类器2&#xff09;训练无分割车牌字符识别模型 3. APP构建1&#xff09;导入OpenCV库…

SAP_ABAP_OLE_EXCEL批导案例

SAP ABAP顾问能力模型梳理_企业数字化建设者的博客-CSDN博客SAP Abap顾问能力模型https://blog.csdn.net/java_zhong1990/article/details/132469977 一、OLE_EXCEL批导 1.1 下载按钮 1.2 选择EXCEL上传&#xff0c;解析EXCLE数据&#xff0c; Call屏幕。 1.3 实现效果 1.4…

git学习笔记 | 版本管理 - 分支管理 - 常见场景

文章目录 git学习笔记Git是什么仓库常见的命令commit 备注规范在文件下设置git忽略文件 .gitignore 版本管理git log | git reflog 查看提交日志/历史版本版本穿梭 git resetgit reset HEAD <file> git checkout -- fileName 丢弃工作区的修改git revertGit恢复之前版本的…

IP对讲终端SV-6005带一路2×15W或1*30W立体声做广播使用

IP对讲终端SV-6005双按键是一款采用了ARMDSP架构&#xff0c;接收网络音频流&#xff0c;实时解码播放&#xff1b;配置了麦克风输入和扬声器输出&#xff0c;SV-6005带两路寻呼按键&#xff0c;可实现对讲、广播等功能&#xff0c;作为网络数字广播的播放终端&#xff0c;主要…

《孤注一掷》背后的技术对抗

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 朱峰 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦midjourney 产品统筹 / bobo 录音间 / 声湃轩北京站 这两天主播们都看完了《孤注一掷》&#xff0c;抛开剧情里面的细节不讲&#xff0c;这部“反诈宣传片”给了大家…

从C过渡到C ++的3个理由

几十年来&#xff0c;嵌入式软件工程师之间一直在争论他们应该使用C还是C 。根据2020年嵌入式市场调查&#xff0c;在大多数情况下&#xff0c;微控制器制造商提供的软件都以C语言提供&#xff0c;实际上&#xff0c;有56&#xff05;的嵌入式软件是用C语言编写的。但是&#x…

基于社交网络算法优化的BP神经网络(预测应用) - 附代码

基于社交网络算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于社交网络算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.社交网络优化BP神经网络2.1 BP神经网络参数设置2.2 社交网络算法应用 4.测试结果&#xff1a;5…

显示GPU进程所属docker 容器

一台服务器&#xff0c;每个人在上面run一个容器&#xff0c;跑各自的代码&#xff0c;虽然通过nvidia-smi可以看到每个进程占用的GPU&#xff0c;但是不好找进程对应的容器id&#xff0c;就没法确认到底是谁占用了较多GPU。 常规操作 通过 nvidia-smi 查看进程占用GPU情况&a…

[C/C++]指针详讲-让你不在害怕指针

个人主页&#xff1a;北海 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏✨收录专栏&#xff1a;C/C&#x1f91d;希望作者的文章能对你有所帮助&#xff0c;有不足的地方请在评论区留言指正&#xff0c;大家一起学习交流&#xff01;&#x1f9…

【Vuex状态管理】Vuex的基本使用;核心概念State、Getters、Mutations、Actions、Modules的基本使用

目录 1_应用状态管理1.1_状态管理1.2_复杂的状态管理1.3_Vuex的状态管理 2_Vuex的基本使用2.1_安装2.2_创建Store2.3_组件中使用store 3_核心概念State3.1_单一状态树3.2_组件获取状态3.3_在setup中使用mapState 4_核心概念Getters4.1_getters的基本使用4.2_getters第二个参数4…