Java分支结构详解

Java分支结构详解

  • 前言
  • 一、if 语句
    • 基本语法
      • 表示一
      • 表示二
      • 表示三
    • 代码示例
      • 判定一个数字是奇数还是偶数
      • 判定一个数字是正数还是负数
      • 判定某一年份是否是闰年
    • 注意要点
      • 悬垂 else 问题
      • 代码风格问题
      • 分号问题
  • 二、switch 语句
    • 基本语法
    • 代码示例
      • 根据 day 的值输出星期
    • 注意事项
      • break 不要遗漏
      • switch 中的值只能是 整数|枚举|字符|字符串
      • switch 不能表达复杂的条件
      • switch嵌套


前言

推荐一个网站给想要了解或者学习人工智能知识的读者,这个网站里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分享这个宝藏网站,请点击下方链接查看。
https://www.captainbed.cn/f1

Java中的分支结构用于根据条件执行不同的代码块,包括if-else语句、switch语句等,实现程序流程的控制。


一、if 语句

在Java中,if语句是一个条件控制语句,用于根据条件的真假决定是否执行特定的代码块。

if语句中,条件是一个布尔表达式,可以是一个比较表达式(例如==!=><等),也可以是一个逻辑表达式(例如&&||!等)。

基本语法

表示一

if(布尔表达式){
    //条件满足时执行代码
}

表示二

if(布尔表达式){
    //条件满足时执行代码
}else{
    //条件不满足时执行代码
}

表示三

if(布尔表达式){
    //条件满足时执行代码
}else if(布尔表达式){
    //条件满足时执行代码
}else{
    //条件都不满足时执行代码
}

代码示例

判定一个数字是奇数还是偶数

public static void main(String[] args) {
    int num = 10;
    if (num % 2 == 0) {
        System.out.println("num 是偶数");
    } else {
        System.out.println("num 是奇数");
    }
}

以上代码是一个Java程序的主方法,程序开始执行的入口。在主方法中,定义了一个整型变量num,并初始化为10。

接下来使用if-else语句判断num是否是偶数。条件表达式num % 2 == 0用于判断num是否可以被2整除,如果可以,则说明num是偶数,执行if语句中的代码块,打印出"num 是偶数"。

如果条件表达式的结果为false,即num不能被2整除,说明num是奇数,执行else语句中的代码块,打印出"num 是奇数"。

因为num的值为10,可以被2整除,所以输出结果为"num 是偶数"。
在这里插入图片描述

判定一个数字是正数还是负数

public static void main(String[] args) {
    int num = 10;
    if (num > 0) {
        System.out.println("num 是正数");
    } else if (num < 0) {
        System.out.println("num 是负数");
    } else {
        System.out.println("num 是 0");
    }
}

以上代码是一个Java程序的主方法,程序开始执行的入口。在主方法中,定义了一个整型变量num,并初始化为10。

接下来使用if-else if-else语句对num的值进行判断。首先判断num是否大于0,如果条件表达式num > 0的结果为true,则执行if语句中的代码块,打印出"num 是正数"。

如果条件表达式num > 0的结果为false,则继续判断num是否小于0。如果条件表达式num < 0的结果为true,则执行else if语句中的代码块,打印出"num 是负数"。

如果以上两个条件表达式的结果都为false,说明num等于0,执行else语句中的代码块,打印出"num 是 0"。

因为num的值为10,大于0,所以输出结果为"num 是正数"。
在这里插入图片描述

判定某一年份是否是闰年

public static void main(String[] args) {
    int year = 2000;
    if (year % 100 == 0) {
        // 判定世纪闰年
        if (year % 400 == 0) {
            System.out.println("是闰年");
        } else {
            System.out.println("不是闰年");
        }
    } else {
        // 普通闰年
        if (year % 4 == 0) {
            System.out.println("是闰年");
        } else {
            System.out.println("不是闰年");
        }
    }
}

以上代码是一个Java程序的主方法,程序开始执行的入口。在主方法中,定义了一个整型变量year,并初始化为2000。

接下来使用嵌套的if-else语句对year进行判断,判断year是否是闰年。

首先判断year是否能被100整除,即条件表达式year % 100 == 0的结果。如果条件表达式的结果为true,则执行if语句中的代码块,进一步判断是否是世纪闰年。

if语句中,判断year是否能被400整除,即条件表达式year % 400 == 0的结果。如果条件表达式的结果为true,则输出"是闰年"。如果条件表达式的结果为false,则输出"不是闰年"。

如果条件表达式year % 100 == 0的结果为false,则执行else语句中的代码块,判断是否是普通闰年。

else语句中,判断year是否能被4整除,即条件表达式year % 4 == 0的结果。如果条件表达式的结果为true,则输出"是闰年"。如果条件表达式的结果为false,则输出"不是闰年"。

因为year的值为2000,满足条件year % 100 == 0,进一步满足条件year % 400 == 0,所以输出结果为"是闰年"。
在这里插入图片描述

注意要点

悬垂 else 问题

public static void main(String[] args) {
    int x = 10;
    int y = 10;
    if (x == 10)
        if (y == 10)
            System.out.println("aaa");
        else
            System.out.println("bbb");
}

在这里插入图片描述
if / else 语句中可以不加 大括号 . 但是也可以写语句(只能写一条语句).

此时 else 是和最接近的 if 匹配.

但是实际开发中我们 不建议 这么写. 最好加上大括号

代码风格问题

public static void main(String[] args) {
    // 风格1
    int x = 10;
    if (x == 10) {
 // 满足条件
    } else {
 // 不满足条件
    }
// 风格2
    int x = 10;
    if (x == 10)
    {
 // 满足条件
    }
    else
    {
 // 不满足条件
    }
}

虽然两种方式都是合法的, 但是 Java 中更推荐使用风格1, { 放在 if / else 同一行.

分号问题

public static void main(String[] args) {
    int x = 20;
    if (x == 10); {
        System.out.println("hehe");
    }
}

在这里插入图片描述
此处多写了一个 分号, 导致分号成为了 if 语句的语句体, 而 { } 中的代码已经成为了和一个 if 无关的代码块.

二、switch 语句

基本语法

public static void main(String[] args) {
    switch(整数|枚举|字符|字符串){
        case 内容1 : {
            内容满足时执行语句;
 [break;]
        }
        case 内容2 : {
            内容满足时执行语句;
 [break;]
        }
 ...
        default:{
            内容都不满足时执行语句;
 [break;]
        }
    }
}

代码示例

根据 day 的值输出星期

public static void main(String[] args) {
    int day = 1;
    switch(day) {
        case 1:
            System.out.println("星期一");
            break;
        case 2:
            System.out.println("星期二");
            break;
        case 3:
            System.out.println("星期三");
            break;
        case 4:
            System.out.println("星期四");
            break;
        case 5:
            System.out.println("星期五");
            break;
        case 6:
            System.out.println("星期六");
            break;
        case 7:
            System.out.println("星期日");
            break;
        default:
            System.out.println("输入有误");
            break;
    }
}

这段代码使用了Switch语句来根据一个整型变量day的值输出对应的星期几。Switch语句中的每个case对应了一个可能的day值,当day的值满足某个case时,会执行该case下的语句,并且使用break语句跳出Switch语句。如果day的值不满足任何一个case,那么会执行default下的语句。在这段代码中,day的值为1,所以输出为"星期一"。
在这里插入图片描述
根据 switch 中值的不同, 会执行对应的 case 语句.

遇到 break 就会结束该 case 语句.

如果 switch 中的值没有匹配的 case, 就会执行 default 中的语句.

我们建议一个 switch 语句最好都要带上 default.

注意事项

break 不要遗漏

否则会失去 “多分支选择” 的效果

public static void main(String[] args) {
    int day = 1;
    switch(day) {
        case 1:
            System.out.println("星期一");
            // break;
        case 2:
            System.out.println("星期二");
            break;
    }
}

在这里插入图片描述
我们发现, 不写 break 的时候, case 语句会依次向下执行, 从而失去了多分支的效果.

switch 中的值只能是 整数|枚举|字符|字符串

public static void main(String[] args) {
    double num = 1.0;
    switch(num) {
        case 1.0:
            System.out.println("hehe");
            break;
        case 2.0:
            System.out.println("haha");
            break;
    }
}

在这里插入图片描述

switch 不能表达复杂的条件

public static void main(String[] args) {
    // 例如: 如果 num 的值在 10 到 20 之间, 就打印 hehe
// 这样的代码使用 if 很容易表达, 但是使用 switch 就无法表示.
    if (num > 10 && num < 20) {
        System.out.println("hehe");
    }
}

在这里插入图片描述

switch嵌套

虽然可以运行,但是不美观,少用

public static void main(String[] args) {
    int x = 1;
    int y = 1;
    switch(x) {
        case 1:
            switch(y) {
                case 1:
                    System.out.println("hehe");
                    break;
            }
            break;
        case 2:
            System.out.println("haha");
            break;
    }
}

在这里插入图片描述


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

QtCreator,动态曲线实例

样式图&#xff1a; .ui 在sloem1.ui文件中&#xff0c;拖入一个label控件&#xff0c; 头文件.h #include "QtGui/QPainter.h" #include "QtCore/QTimer.h"protected:bool eventFilter(QObject *obj,QEvent *event);void labelPaint();public slots: /…

Element Plus/vue3 无限级导航实现

在使用element plus 时&#xff0c;最初要使用的就是导航组件了&#xff0c;官网上看到的也就是写死的一级/二级导航&#xff0c;那么如何设计一个无限级且动态的导航呢&#xff1f;毋庸置疑&#xff0c;递归。废话不多说&#xff0c;直接看代码和效果&#xff1a; 代码&#x…

我在去哪儿薅到了5块钱火车票代金券,速薅

哈哈&#xff0c;亲爱的薅羊毛小伙伴们&#xff01; 刚刚在去哪儿大佬那儿发现了一个超级薅羊毛福利&#xff01;我只花了短短两分钟&#xff0c;就搞到了一张5块钱火车票代金券&#xff0c;简直是天上掉馅饼的节奏啊&#xff01; 话不多说&#xff0c;薅羊毛的姿势给你们摆好…

树的非递归遍历(层序)

层序是采用队列的方式来遍历的 就比如说上面这颗树 他层序的就是&#xff1a;1 24 356 void LevelOrder(BTNode* root) {Que q;QueueInit(&q);if (root){QueuePush(&q, root);}while (!QueueEmpty(&q)){BTNode* front QueueFront(&q);QueuePop(&q);print…

Docker Compose使用

Docker-Compose是什么 docker建议我们每一个容器中只运行一个服务,因为doker容器本身占用资源极少&#xff0c;所以最好是将每个服务单独分割开来&#xff0c;但是这样我们又面临了一个问题&#xff1a; 如果我需要同时部署好多个服务&#xff0c;难道要每个服务单独写Docker…

202473读书笔记|《但愿呼我的名为旅人:松尾芭蕉俳句300》——围炉夜话,身顿心安,愿每个人都能在爱里自由驰骋

202473读书笔记|《但愿呼我的名为旅人&#xff1a;松尾芭蕉俳句300》——围炉夜话&#xff0c;身顿心安&#xff0c;愿每个人都能在爱里自由驰骋 &#x1f60d;&#x1f60d;&#x1f929;&#x1f929; 译者序正文二正文三正文四正文五正文六正文七 《但愿呼我的名为旅人&…

网站笔记:huggingface——can you run it?

Can You Run It? LLM version - a Hugging Face Space by Vokturz 1 配置设置部分 Model Name就是需要测量的模型名称 GPU Vendor ——GPU供应商 Filter by RAM (按RAM过滤) 筛选出所有内存容量在选择范围之间的GPU GPU 下拉菜单选择具体的GPU型号 LoRa % trainable param…

MT3608B是一个恒定频率,6引脚SOT23电流模式升压转换器用于小型,低功耗应用的目的芯片IC

一般说明 该MT3608B是一个恒定频率&#xff0c;6引脚SOT23电流模式升压转换器用于小型&#xff0c;低功耗应用的目的。该MT3608B开关在1.2MHz&#xff0c;并允许使用微小&#xff0c;低成本的电容器和电感2毫米或更少的高度。内部软启动的结果在小浪涌电流和延长电池寿…

Linux网络——端口号理解与UDP协议

前言 在之前&#xff0c;我们学习了UDP通信与套接字编程&#xff0c;了解到需要使用端口号来表示网络中的数据需要传输到哪个进程&#xff0c;同时使用套接字的进行了UDP的通信。但当时在应用层&#xff0c;我们仅仅是浮于表面进行了初步的使用&#xff0c;今天我们来深入的理…

面试八股之MySQL篇1——慢查询定位篇

&#x1f308;hello&#xff0c;你好鸭&#xff0c;我是Ethan&#xff0c;一名不断学习的码农&#xff0c;很高兴你能来阅读。 ✔️目前博客主要更新Java系列、项目案例、计算机必学四件套等。 &#x1f3c3;人生之义&#xff0c;在于追求&#xff0c;不在成败&#xff0c;勤通…

卷积神经网络(CNN)详细介绍及其原理详解

卷积神经网络&#xff08;Convolutional Neural Networks&#xff0c;简称CNN&#xff09;是深度学习中非常重要的一类神经网络&#xff0c;主要用于图像识别、图像分类、物体检测等计算机视觉任务。本文将详细介绍卷积神经网络的基本概念、结构组成及其工作原理&#xff0c;并…

IIS网站搭建

1、添加网站 2、命名加上端口方便查看端口占用情况&#xff08;可有可无&#xff09; 3、导入sql文件&#xff0c;数据库打开——新建数据库——建好的数据库右键运行sql文件——打开路径网站下面的install文件下的sql——选中之后点开始——左侧页面的右键刷新就会显示。

2024最新 Jenkins + Docker 实战教程(四) - 编写自己的Springboot项目实现自动化部署

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

前端基础:1-2 面向对象 + Promise

面向对象 对象是什么&#xff1f;为什么要面向对象&#xff1f; 通过代码抽象&#xff0c;进而藐视某个种类物体的方式 特点&#xff1a;逻辑上迁移更加灵活、代码复用性更高、高度的模块化 对象的理解 对象是对于单个物体的简单抽象对象是容器&#xff0c;封装了属性 &am…

IP学习——ospf1

OSPF:开放式最短路径优先协议 无类别IGP协议&#xff1a;链路状态型。基于 LSA收敛&#xff0c;故更新量较大&#xff0c;为在中大型网络正常工作&#xff0c;需要进行结构化的部署---区域划分、ip地址规划 支持等开销负载均衡 组播更新 ---224.0.0.5 224.0.0.6 …

小程序properties默认值定义及父子组件的传值

因经常写vue&#xff0c;很久没写小程序&#xff0c;容易串频道&#xff0c;现记录一下小程序的组件用法、监听传入值及父子传值方式 首先小程序中传值是没有&#xff1a;(冒号)的&#xff0c;其次properties中定义默认值不需要写default 1.自定义组件中&#xff0c;首先json…

存储+调优:存储-IP-SAN

存储调优&#xff1a;存储-IP-SAN 数据一致性问题 硬盘&#xff08;本地&#xff0c;远程同步rsync&#xff09; 存储设备&#xff08;网络&#xff09; 网络存储 不同接口的磁盘 1.速率 2.支持连接更多设备 3.支持热拔插 存储设备什么互联 千…

iOS 17.5 release notes

文章目录 iOS 17.5 更新恢复了多年前删除的一些图片新增彩虹壁纸欧盟用户可直接从网站下载应用新增了追踪通知改进 Apple News图书应用"阅读目标"设计更新颜色匹配的播客小部件Web浏览器安全权限的访问下一代“Beats Pill”扬声器在iOS 17.5代码中得到确认店内Vision…

学硕都考11408的211院校!河北工业大学计算机考研考情分析!

河北工业大学&#xff08;Hebei University of Technology&#xff09;&#xff0c;简称河北工大&#xff0c;坐落于天津市&#xff0c;由河北省人民政府、天津市人民政府与中华人民共和国教育部共建&#xff0c; 隶属于河北省&#xff0c;是国家“双一流”建设高校、国家“211…

企业微信主体机构如何修改?

企业微信变更主体有什么作用&#xff1f; 做过企业运营的小伙伴都知道&#xff0c;很多时候经常会遇到现有的企业需要注销&#xff0c;切换成新的企业进行经营的情况&#xff0c;但是原来企业申请的企业微信上面却积累了很多客户&#xff0c;肯定不能直接丢弃&#xff0c;所以这…