JavaSE基础(三)—— 程序流程控制、Random随机数

news2024/9/28 17:25:49

目录

一、顺序结构

二、分支结构

1. if

1.1 if分支有三种格式​编辑

2. switch

2.1 if、switch分支各自适合做什么业务场景

3. switch的穿透性

三、循环结构 

1. for 循环​编辑

2. while 循环

2.1 什么时候用for循环,什么时候用while循环

3. do-while循环

4. 三种循环的区别

5. 死循环

6. 循环嵌套

7. 跳转控制语句

7.1 break和continue的拓展知识点

四、Random随机数

1. Random生成随机数的特点

2. Random生成区间随机数的技巧:减加法


流程控制语句:Java提供了一些流程控制语句,来控制程序执行流程。

一、顺序结构

程序默认,如果你没有写其他的结构,按照代码的先后顺序,依次执行程序中大多数的代码都是这样执行的。

public class Test { 
    public static void main(String[] args) {
        System.out.println("A");
        System.out.println("B");
        System.out.println("C");
    }
}

二、分支结构

1. if

根据判定的结果(真或假)决定执行某个分支的代码

1.1 if分支有三种格式

执行流程:首先判断条件表达式的结果,如果为true执行语句体,为 false 就不执行语句体。
注意事项:if 语句中,如果大括号控制的只有一行代码,则大括号可以省略不写。


执行流程:首先判断条件表达式的结果,如果为true执行语句体1,为 false 就执行语句体2。


执行流程:
① 先判断条件1的值,如果为true则执行语句体1,分支结束;如果为false则判断条件2的值
② 如果值为true就执行语句体2,分支结束;如果为false则判断条件3的值
③ ...
④ 如果没有任何条件为true,就执行else分支的语句体n+1。

2. switch

是匹配条件去执行分支, 适合做值匹配的分支选择,结构清晰,格式良好。

执行流程:

① 先执行表达式的值,拿着这个值去与case后的值进行匹配。
② 匹配哪个case的值为true就执行哪个case,遇到break就跳出switch分支。
③ 如果case后的值都不匹配则执行default代码。

2.1 if、switch分支各自适合做什么业务场景

  • if其实在功能上远远强大于switch。
  • if适合做区间匹配。
  • switch适合做:值匹配的分支选择、代码优雅。

3. switch的穿透性

如果代码执行到没有写break的case块,执行完后将直接进入下一个case块执行代码(而且不会进行任何匹配),直到遇到break才跳出分支,这就是switch的穿透性。

作用:存在多个case分支的功能代码是一样时,可以用穿透性把流程集中到同一处处理,这样可以简化代码。

三、循环结构 

控制一段代码反复执行很多次。

1. for 循环

// 输出3次HelloWorld
for (int i = 0; i < 3; i++) {
    System.out.println("Hello World");
}

执行的流程:
① 循环一开始,执行int i = 0 一次。
② 然后判断循环条件:0 < 3 返回true ,进入到循环体中执行输出 :helloWorld ,然后执行迭代语句i++ , 此时i=1了。
③ 然后判断循环条件:1 < 3 返回true ,进入到循环体中执行输出 :helloWorld ,然后执行迭代语句i++ , 此时i=2了。
④ 然后判断循环条件:2 < 3 返回true ,进入到循环体中执行输出 :helloWorld, 然后执行迭代语句i++ , 此时i=3了。
⑤ 然后判断循环条件:3 < 3 返回false, 循环立即结束。

2. while 循环

 

int i = 0;
while (i < 3) {
    System.out.println("Hello World");
    i++;
}

2.1 什么时候用for循环,什么时候用while循环

  • 功能上是完全一样的,for能解决的while也能解决,反之亦然。
  • 使用规范是:知道循环几次:使用for;不知道循环几次建议使用:while

3. do-while循环

先执行再判断循环条件。

 

int i = 0;
do {
    System.out.println(“Hello World!");
    i++;
} while( i < 3);

do-while循环的特点:一定会先执行一次循环体。

4. 三种循环的区别

  • for循环 和 while循环(先判断后执行)
  • do...while (第一次先执行后判断)

for 和 while 的区别:

  • for循环和while循环的执行流程是一模一样的。
  • 如果已知循环次数建议使用for循环,如果不清楚要循环多少次建议使用while循环。
  • for循环中,控制循环的变量只在循环中可以使用。While循环中,控制循环的变量在循环后还可以继续使用。

5. 死循环

一直循环的执行下去,如果没有干预不会停止下来。

6. 循环嵌套

循环中又包含循环

嵌套循环的特点: 外部循环每循环一次,内部循环全部执行完一次。

7. 跳转控制语句

  • break : 跳出并结束当前所在循环的执行。
  • continue: 用于跳出当前循环的当次执行,进入下一次循环。

注意事项:

  • break : 只能用于结束所在循环, 或者结束所在switch分支的执行。
  • continue : 只能在循环中进行使用。

7.1 break和continue的拓展知识点

break : 可以用在嵌套循环中跳出整个外部循环的并立即结束它

OUT:
for (int i = 0; i < 4; i++) {
    for (int j = 0; j < 5; j++) {
        …
        break OUT;
    }
}

continue: 可以用在嵌套循环中跳出外部循环的当次执行,进入外部循环的下一次。

OUT:
for (int i = 0; i < 4; i++) {
    for (int j = 0; j < 5; j++) {
        …
        continue OUT;
    }
}

四、Random随机数

作用:用于在程序中获取随机数的技术。

使用步骤:

①:导包:告诉程序去JDK的哪个包中找随机数技术
②:写一行代码代表得到随机数对象
③:调用随机数的功能获取0-9的随机数

import java.util.Random;

public class Test {
    public static void main(String[] args) {
        Random r = new Random();
        int number = r.nextInt(10);
        System.out.println(“随机生成了: ” + number);
    }
}

注意:nextInt(n) 功能只能生成: 0 至 n-1之间的随机数,不包含n

1. Random生成随机数的特点

nextInt(n)功能只能生成:0 – (n-1)之间的随机数

2. Random生成区间随机数的技巧:减加法

例如:要生成 1 – 10之间的随机数,程序怎么实现?

例如:Random随机数如何生成 65 – 91之间的随机数

  • 65 – 91 => (0 - 26)+ 65
  • int number = r.nextInt(27) + 65;


 

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

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

相关文章

探索抖音全域兴趣电商的特点与优势

抖音全域兴趣电商是抖音在电商领域的一项创新业务。它是一种全新的购物方式&#xff0c;通过抖音平台提供的社交化购物体验&#xff0c;将用户的兴趣、购物需求和商品展示相结合&#xff0c;为用户提供更为个性化、精准的购物体验。下面四川不若与众将对抖音全域兴趣电商进行一…

uboot start_armboot函数 第二阶段代码分析

1.1、start_armboot函数简介 这个函数整个构成了uboot启动的第二阶段。 1.2、uboot第二阶段做的事情 uboot第一阶段主要就是初始化了SoC内部的一些部件&#xff08;譬如看门狗、时钟、串口…&#xff09;&#xff0c;然后初始化DDR并且完成重定位。那么&#xff0c;uboot的第…

Win10配置ESP32-IDF+VSCode开发环境

一、安装包下载&#xff1a; Git&#xff1a;Git for WindowsPython&#xff1a;Download Python | Python.org以Windows x86-64开头的是 64 位的 Python 安装程序&#xff1b;以Windows x86开头的是 32 位的 Python 安装程序。ESP-IDF&#xff08;选择Offline版本&#xff09…

【微机原理】8088/8086的寻址方式

目录 一.指令的组成 二.操作数的寻址方式 1.立即数寻址 2.寄存器寻址方式 3.存储器寻址方式 &#xff08;1&#xff09;直接寻址 &#xff08;2&#xff09;寄存器间接寻址 &#xff08;3&#xff09;寄存器相对寻址方式 &#xff08;4&#xff09;基址变址寻址方式&#xff08…

基于zookeeper实现分布式锁

目录 zookeeper知识点复习 相关概念 java客户端操作 实现思路分析 基本实现 初始化链接 代码落地 优化&#xff1a;性能优化 实现阻塞锁 监听实现阻塞锁 优化&#xff1a;可重入锁 zk分布式锁小结 zookeeper知识点复习 Zookeeper&#xff08;业界简称zk&#xff…

【Linux】多路转接--select、poll、epoll,非阻塞等待

1.IO的概念 IO等拷贝数据 等&#xff1a;发送缓冲区满了或者接受缓冲区没有数据&#xff0c;就需要等待 高效IO就是&#xff1a;减少单位时间内,"等"的比重 2. 阻塞IO和非阻塞IO 2.1.阻塞IO 阻塞等待会在read的地方等待 #include <iostream> #include &l…

JavaScript实现输入数字,输出是几月份的代码

以下为实现输入数字&#xff0c;输出是几月份的代码和运行截图 目录 前言 一、实现输入数字&#xff0c;输出是几月份的 1.1 运行流程及思想 1.2 代码段 1.3 JavaScript语句代码 1.4 运行截图 前言 1.若有选择&#xff0c;您可以在目录里进行快速查找&#xff1b; 2.本…

1699_simulink代码生成配置初级方案

全部学习汇总&#xff1a; GreyZhang/g_matlab: MATLAB once used to be my daily tool. After many years when I go back and read my old learning notes I felt maybe I still need it in the future. So, start this repo to keep some of my old learning notes servral …

数据库篇:初始化、建表、配置及调用

微信小程序云开发实战-答题积分赛小程序 数据库篇:初始化、建表、配置及调用 开通云开发服务 点击【云开发】,开通云开发服务; 开通服务完成后,方可继续往下操作; 题库数据表初始化 创建数据表 点击【数据库】,然后点击【+】创建数据表;

彻底告别手动配置任务,魔改xxl-job!

分析 改造 1、接口调用 2、创建新注解 3、自动注册核心 4、自动装配 测试 测试后 XXL-Job是一款非常优秀的任务调度中间件&#xff0c;其轻量级、使用简单、支持分布式等优点&#xff0c;被广泛应用在我们的项目中&#xff0c;解决了不少定时任务的调度问题。不仅如此&a…

RabbitMQ 简单模型

MQ引言 1.1 什么是MQ ​ MQ(Message Quene) : 翻译为消息队列,通过典型的生产者和消费者模型,生产者不断向消息队列中生产消息&#xff0c;消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的&#xff0c;而且只关心消息的发送和接收&#xff0c;没有业务逻辑的侵…

chatGPT+Midjourney制作绘画本

chatGPTMidjourney制作绘画本 灵感来源&#xff1a;https://www.bilibili.com/video/BV1N24y1F7ga/?spm_id_from888.80997.embed_other.whitelist&vd_source6dd97671c42eb7cf111063714216bd0b 最终效果&#xff1a; 绘本故事 故事塑造能力弱的人可以使用chatGPT来帮助编…

wait/waitpid函数等待子进程状态发生改变

&#x1f38a;【进程通信与并发】专题正在持续更新中&#xff0c;进程&#xff0c;线程&#xff0c;IPC&#xff0c;线程池等的创建原理与运用✨&#xff0c;欢迎大家前往订阅本专题&#xff0c;获取更多详细信息哦&#x1f38f;&#x1f38f;&#x1f38f; &#x1fa94;本系列…

【自看】2023前端面试上岸手册——VUE部分

目录 Vue 的基本原理双向数据绑定的原理MVVM、MVC、MVP 的区别slot 是什么&#xff1f;有什么作用&#xff1f;原理是什么&#xff1f;\$nextTick 原理及作用Vue 单页应用与多页应用的区别Vue 中封装的数组方法有哪些&#xff0c;其如何实现页面更新Vue data 中某一个属性的值发…

商品管理系统【控制台+MySQL】(Java课设)

系统类型 控制台类型Mysql数据库存储数据 使用范围 适合作为Java课设&#xff01;&#xff01;&#xff01; 部署环境 jdk1.8Mysql8.0Idea或eclipsejdbc 运行效果 本系统源码地址&#xff1a;https://download.csdn.net/download/qq_50954361/87738976 更多系统资源库地…

辅助驾驶功能开发-功能规范篇(16)-2-领航辅助系统NAP-匝道跟车基础功能

书接上回 2.3.3匝道辅助驾驶 匝道辅助驾驶功能根据导航引导在ODD范围内辅助驾驶车辆进出匝道,主动变道并入或开出主路,并可根据导航路线引导车辆通过跨高速连接路。 前置条件: 1)驾驶员设置导航目的地及导航路线 2)开启辅助驾驶功能,系统进入NOA功能 2.3.3.1.上下匝道…

如何设计一个可扩展的优惠券功能

本文主要分享了如何设计一个可扩展的优惠券功能。 一、功能特性介绍 1.每个条件的代码独立&#xff0c;相当于单独的实现类实现接口&#xff0c;就能通过配置添加到优惠券条件校验当中&#xff0c;支持多种条件灵活组合 2.新增一种使用条件可以不修改核心流程代码&#xff0…

Angular 与PDF之二:打印预览的实现

如何在angular中实现打印和预览pdf的功能, 使用print.js这个包就可实现这个功能 Print.js介绍 Print.js可以打印pdf文件&#xff0c;html元素&#xff0c;图片。官网 https://printjs.crabbly.com/ Print.js使用 首先新建一个angular项目&#xff0c;在项目里下载print.js n…

[JS每M日N练] [格物] - 你所不知道的toString

文章目录 导读Object.prototype.toString常见类型转换结果Object.toString ! Object.prototype.toString对Object.prototype.toString.call(obj)的理解 .toString.toString TypeError误区tostring被改写了定义在原型链的什么位置上方法重写 文章小结参考资料 导读 开发过程中经…

同时使用注解和 xml 的方式引用 dubbo 服务产生的异常问题排查实战

文章目录 一、现象二、问题排查三、结论四、解决方案 一、现象 使用 nacos 作注册中心的线上 dubbo 消费端应用每隔 1 分钟就会抛出以下异常&#xff08;为使描述简单化&#xff0c;文章中使用本地 demo 来复现&#xff09;&#xff0c;该异常表示无法连接到 172.17.0.1:20881…