Java基础——流程控制

news2024/9/23 11:15:27

文章目录

  • 顺序结构
  • 分支结构
    • if
    • if else
    • switch
  • 循环结构
    • for
    • while
    • do while
    • 嵌套循环
  • 流程控制语句
    • break
    • continue
    • return

流程控制语句是用来控制程序中各语句执行顺序,可以把语句组合成能完成一定功能的小逻辑模块。

顺序结构

程序从上到下逐行执行,中间没有任何判断和跳转。

public class FlowControlDemo {
    public static void main(String[] args) {
    	//程序从上到下依次加载执行,最后输出结果
        int value = 3;
    	int lastValue = value + 3;
    	System.out.sprintln("最新值:"+lastVlaue);
    }
}

Java的成员变量采用合法的前向引用(即未提前定义加载的成员变量不能被引用)。

public class FlowControlDemo {
	//错误示范
    public int val = num + 5;
    public int num = 3;
}

分支结构

if

当 if 括号里的条件表达式满足时(即为true,反之false),会执行 if 代码块(即两个大括号包裹部分)里的语句,否则执行该 if 代码块外的语句。

语法:

if(条件表达式) {
 	//执行语句;       
}

示例:

int num = 3;
if (num > 5) {
    System.out.println("num数值大于5");
}
System.out.println("num数值小于5"); //输出:num数值小于5

if else

当 if 括号里的条件表达式满足时(即为true,反之false),执行 if 代码块(即两个大括号包裹部分)里的语句,否则执行 else 代码块内的语句。

语法:

if(条件表达式) {
    //执行语句1;
} else {
    //执行语句2;
}

示例:

int num = 3;
if (num > 5) {
    System.out.println("num数值大于5");
} else {
    System.out.println("num数值小于5"); //输出:num数值小于5
}

当第一个 if 括号里的条件表达式满足条件时(即为true,反之false),则执行该 if 代码块内(即两个大括号包裹部分)的语句,否则继续判断下一个 else if 括号里的条件表达式式( else if 可以有多个),直到判断满足条件的 if,并执行该 if 内的语句,否则执行最后一个 else 代码块内的语句。

语法:

if(条件表达式1) {
    //执行语句1;
} else if(条件表达式2) {
    //执行语句2;
} .... {
	//执行语句3
} else if(条件表达式4){
    //执行语句4;
} else {
	//执行语句5;
}

注意:省略号表示可以有多个else if,并非只能有一个,根据个人判断逻辑决定。

示例:

int num = 3;
if (num > 5) {
    System.out.println("num数值大于5");
} else if (num > 0){
    System.out.println("num数值大于0"); //输出:num数值大于0
} else {
    System.out.println("num数值小于0");
}

switch

语法:

switch(表达式) {
    case 常量1:
        //执行语句1;
        break;
    case 常量2:
        //执行语句2;
        break;
    .....
    default:
        //执行语句n;
        break;
}

注意:

  • 表达式可以是byte,short,char,int,枚举(jdk1.5),字符串(jdk1.7)。
  • case子句后的值必须是常量,不能是变量名或不确定的表达式值。
  • break语句用来执行完一个case分支后使程序跳出Switch语句块。
  • default子句是可选的,当所有case都不匹配时执行。

示例:

String level = "A";
switch (level) {
    case "A":
        System.out.println("优秀"); //输出:优秀
        break;
    case "B":
        System.out.println("良好");
        break;
    case "C":
        System.out.println("合格");
        break;
    default:
        System.out.println("不合格");
}

循环结构

for

语法:

for(初始化部分; 循环条件部分; 迭代部分) {
    //执行循环体
}

执行流程:
在这里插入图片描述
注意:

  • 当循环条件不满足时,直接结束循环。
  • 初始化部分可以声明多个变量,必须是同一类型,用逗号隔开。
  • 迭代部分可以有多个变量迭代,用逗号隔开。

示例:

int num = 10;
int count = 0;
for (int i = 0; i < num; i++) {
    System.out.println("当前遍历次数:"+(++count));
}

while

语法:

初始化部分;
while(循环条件部分) {
     //执行循环体
     //迭代部分
}

注意:迭代部分要避免死循环。

示例:

int num = 10;
int count = 0;
while (num > 0) { //循环判断
    System.out.println("当前遍历次数:"+(++count)); //执行语句
    num--; //变量迭代
}

do while

语法:

初始化部分;
do{
     //循环体部分
     //迭代部分
}while(循环条件部分);

注意:do while循环必执行一次。

示例:

int num = 10;
int count = 0;
do {
    System.out.println("当前遍历次数:"+(++count));
    num--;
} while (num > 0);

嵌套循环

嵌套循环就是循环体内有循环,外层循环体内的循环称为内循环,当只有内层循环的循环条件为false时,才会完全跳出内层循环,执行内循环外的语句,执行完才可结束外层的当次循环,开始下一次循环。

流程图:(for循环嵌套为例,其他循环同理)
在这里插入图片描述
注意:一般嵌套循环不超过3层,避免禁止无限套娃,避免死循环以及问题定位复杂。

当多层循环中,跳出指定的某层循环,可以使用带标签的break或continue跳出。

outer:for (int i = 0; i < 10; i++) { //外循环标签outer
    System.out.println("外循环输出:"+i);
    inner:for (int j = 0; j < 3; j++) { //内循环标签inner
        System.out.println("内循环输出:"+j);
        if (j == 2) {
            System.out.println("外循环结束");
            break outer; //跳出外循环
        }
    }
}

示例:

/**
 * 获取100以内的质数
 * 扩展:质数是除了1和本身,不能被其他数整除的数
 */
public static void main(String[] args) {
    //是否质数标识
    boolean isFlag = true;
    //0和1既不是质数也不是合数,所以从自然数2开始
    for (int i = 2; i < 100; i++) {
        //为什么是j<=Math.sqrt(i),一个数的平均跟
        // 例如:10 = 2 * 5; 每一个数都会有对应的一个自然数与之匹配(2和5匹配),我们只需要取它匹配的一半(自然数2)就可,需要在取5去判断一次
        for (int j = 2; j <= Math.sqrt(i); j++) {
            if (i % j == 0) {
                isFlag = false;
                //被其他数整除就说明该数不是质数,直接break不需要再执行
                break;
            }
        }
        if (isFlag) {
            //输出质数
            System.out.println(i);
        }
        isFlag = true;
    }
}

流程控制语句

break

终止某个语句块的执行。

在嵌套循环中,通过标签指明要终止的是哪一层循环。

注意:该终止语句只能用于Switch语句和循环语句中。

示例:

int num = 3;
while (num > 0) {
    if(num == 1) {
    	break; //当num等于1时,终止while循环
    }
    num--;
}

continue

只能使用在循环结构中,用于跳过当前循环,执行下一次循环。

在嵌套循环中,通过标签指明要跳过哪一层循环。

示例:

int num = 3;
while (num > 0) {	
    if(num == 1) {
    	continue; //当num等于1时,跳过执行后面的语句,直接开始下一次循环
    }
    System.out.println("循环输出:"+num);
    num--;
}

return

结束整个方法,不管return处于多少层循环之内。

示例:

public void test() {
	for (int i = 0; i < 10; i++) {
        for (int j = 0; j < 3; j++) {
        	if(j == 2) {
        		return; //结束整个test方法
			}
        }
    }
}

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

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

相关文章

系统优化-异步化

目录 1:异步化 1.1:什么是同步?什么是异步? 1.2:异步化业务流程分析 1.3:异步化的问题 2:线程池的理论和实战 2.1:为啥需要线程池? 2.2:线程池的实现 2.2.1:线程池参数 2.2.2:线程池的工作机制 1:异步化 什么时候使用异步化? 调用的服务处理能力有限&#xff0c…

酷开科技 | 酷开系统大屏电视,打造精彩家庭场景

在信息资讯不发达的年代&#xff0c;电视机一直都是个人及家庭重要的信息获取渠道和家庭娱乐中心&#xff0c;是每个家庭必不可少的大家电之一&#xff01;在快节奏的现代生活中&#xff0c;受手机和平板的冲击&#xff0c;电视机这个曾经的客厅“霸主”一度失去了“主角光环”…

Haproxy 服务

Haproxy&#xff1a;他也是常用的负载均衡软件 nginx 支持四层转发&#xff0c;七层转发 haproxy 也是四层和七层转发 LVS的DR和NAT都是基于四层转发 都是基于流量的转发。 tun:四层和七层都有。 基于四层的转发&#xff1a; 1&#xff0c;lvs 2&#xff0c;nginx 3&…

Go语言入门心法(十六):Go远程过程调用框架GRPC实战

Go语言入门心法(一): 基础语法 Go语言入门心法(二): 结构体 Go语言入门心法(三): 接口 Go语言入门心法(四): 异常体系 Go语言入门心法(五): 函数 Go语言入门心法(六): HTTP面向客户端|服务端编程 Go语言入门心法(七): 并发与通道 Go语言入门心法(八): mysql驱动安装报错o…

vue-admin相关问题记录

编辑器设置自定义高度 base.component.js内关于tinymce内容初始化设置&#xff0c;增加高度自定义接收并初始化 <tinymce :content.sync"form.article_content" :height"400"></tinymce> textarea自定义高度 tooltip备注

Python数据结构(树)

Python数据结构&#xff08;树&#xff09; 树的概念 树(英语: tree)是一种抽象数据类型ADT) 或是实作这种抽象数据类型的数据结构&#xff0c;用来模拟具有树状结构性质的数据集合。它是由n(n>1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一…

Elasticsearch核心技术与实战-05-elasticsearch的安装与简单配置-Windows

首先下载elasticsearch的zip包&#xff1a;下载地址 网络不通的解决方法&#xff1a;国内镜像站 es、kibana、logstash均可在华为云开元镜像站自行选择版本下载&#xff1a;下载地址 下载插件包&#xff1a; .\bin\elasticsearch-plugin install analysis-icu .\bin\elasti…

ORB-SLAM系列算法相关介绍(综合版)

一、参考资料 ORB-SLAM2详解&#xff08;一&#xff09;简介 &#xff08;公开课&#xff09;视觉SLAM原理与ORB-SLAM3系列算法 二、相关介绍 1. ORB简介 ORB指的是一种旋转不变性特征。 2. ORB-SLAM系列算法的演进 三、ORB-SLAM 论文&#xff1a;ORB-SLAM: A Versatile …

php使用lunar实现农历、阳历、节日等功能

lunar是一个支持阳历、阴历、佛历和道历的日历工具库&#xff0c;它开源免费&#xff0c;有多种开发语言的版本&#xff0c;不依赖第三方&#xff0c;支持阳历、阴历、佛历、道历、儒略日的相互转换&#xff0c;还支持星座、干支、生肖等。仅供参考&#xff0c;切勿迷信。 官…

相机卡格式化了还能恢复吗?答案在这!(附带恢复教程)

“天啊&#xff01;和朋友出去旅行拍了好多美美的照片&#xff0c;在传照片的时候不小心点到了格式化&#xff0c;相机里所有的照片都被清空了&#xff01;这可怎么办呀&#xff1f;相机卡被格式化了还有机会恢复吗&#xff1f;” 相机的存储卡通常会保存我们很多美好的记忆&am…

某网站互动数据采集

1&#xff0c;网址 aHR0cHM6Ly9uZXdzLmZ1dHVubi5jb20vcG9zdC8zMzE4MzE1OQ2&#xff0c;找到返回互动数的请求包 3&#xff0c;采集互动数据加密信息如下 4&#xff0c;察看抓到的包&#xff0c;不难发现futu-offline-csrf-v2和futu-x-csrf-token-v2这两个参数在首页的请求中有…

vue2.0项目中组件和iframe之间如何传值

vue2.0项目中组件和iframe之间如何传值 一、vue组件二、iframe组件 一、vue组件 mounted() {// 注册 message 事件监听器&#xff0c;只注册一次window.addEventListener(message, this.handleFromIframeMessage) }, beforeDestroy() {// 移除事件监听器window.removeEventList…

测开( 进阶篇)

目录 按测试对象进行划分 界面测试 可靠性测试 容错性 灾难恢复性测试 - 了解即可 文档测试 兼容性测试 易用性测试 安装卸载测试 安全测试 性能测试 内存泄漏测试 实战 - 微信发红包的测试用例 按是否查看代码划分 黑盒测试(Black-box Testing) 白盒测试(Whit…

02333软件工程串讲

完整笔记在语雀 https://www.yuque.com/huangzhanqi/nrt1l4/zoa0g0osnrmog0xdhttps://www.yuque.com/huangzhanqi/nrt1l4/zoa0g0osnrmog0xd 《软件工程》串讲讲义 应考指导 一、课程介绍 1、课程性质 《软件工程》是全国高等教育自学考试计算机及应用&#xff08;独立本科…

Leo赠书活动-01期 【Python数据挖掘——入门进阶与实用案例分析】

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 赠书活动专栏 ✨特色专栏&#xff1a;…

隧道代理 vs 普通代理:哪种更适合您的爬虫应用?

前言 随着互联网的普及&#xff0c;爬虫技术在多个领域得到广泛应用。在进行爬虫开发时&#xff0c;代理服务器是不可或缺的工具之一。代理服务器可以隐藏客户端的真实 IP 地址和位置&#xff0c;从而保护客户端的隐私&#xff0c;同时通过代理可以绕过一些网络限制和安全机制…

重生奇迹mu血色城堡攻略教程

重生奇迹mu血色城堡所需道具 血色城堡位于冰风谷的基地内&#xff0c;具体坐标是209&#xff0c;30&#xff0c;玩家找到此处大天使的使者后&#xff0c;与其对话并携带好相应的道具&#xff0c;便能在活动开启后进入血色城堡。进入城堡需要与你等级对应的透明披风&#xff0c…

再获Gartner权威认可!安全狗作为CWPP代表厂商入选《2023中国网络安全技术成熟度曲线》报告

近日&#xff0c;国际权威研究机构Gartner发布了《2023中国网络安全技术成熟度曲线》&#xff08;Hype Cycle for Security in China&#xff0c;2023&#xff09;报告。 作为国内云原生安全领导厂商&#xff0c;安全狗也凭借综合且全面的云工作负载安全技术与实力&#xff0c;…

13. 机器学习 - 数据集的处理

文章目录 Training data splitNormalizationStandardizedONE-HOT补充&#xff1a;SOFTMAX 和 CROSS-ENTROPY Hi&#xff0c; 你好。我是茶桁。 上一节课&#xff0c;咱们讲解了『拟合』&#xff0c;了解了什么是过拟合&#xff0c;什么是欠拟合。也说过&#xff0c;如果大家以…

【AGC】更新应用信息报未知错误解决方法

【问题描述】 最近有几个开发者遇到了一个问题&#xff0c;他们在AGC控制台配置好应用信息的图标和截图之后&#xff0c;点击保存按钮会弹出“未知错误&#xff0c;请稍后再试”的异常报错&#xff0c;导致无法正确保存应用配置信息。 出错页面如图所示。 ​​ 【解决方案】 …