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");elseSystem.out.println("bbb");
}

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

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

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

代码风格问题

public static void main(String[] args) {// 风格1int x = 10;if (x == 10) {// 满足条件} else {// 不满足条件}
// 风格2int 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;}
}

在这里插入图片描述


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

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

相关文章

spring常用知识点

1、拦截器和过滤器区别 1. 原理不同&#xff1a; 拦截器是基于java的反射机制&#xff0c;而过滤器采用责任链模式是基于函数回调的。 2. 使用范围不同&#xff1a; 过滤器Filter的使用依赖于Tomcat等容器&#xff0c;导致它只能在web程序中使用 拦截器是一个Sping组件&am…

abs(-2147483648) == 2147483648?

从数学意义上&#xff0c;这是对的。但是&#xff0c;就怕但是。 #include int main() {long long v;v abs(-2147483648);printf("%lld\n", v);return 0; } 输出: -2147483648 我们从source code中一一解开. /* Return the absolute value of I. */ int abs (…

Mongodb介绍及springboot集成增删改查

文章目录 1. MongoDB相关概念1.1 业务应用场景1.2 MongoDB简介1.3 体系结构1.4 数据模型1.5 MongoDB的特点 2. docker安装mongodb3. springboot集成3.1 文件结构3.2 增删改查3.2.1 增加insert3.2.2 保存save3.2.3 更新update3.2.4 查询3.2.5 删除 1. MongoDB相关概念 1.1 业务…

Docker-Android安卓模拟器本地部署并实现远程开发测试

文章目录 1. 虚拟化环境检查2. Android 模拟器部署3. Ubuntu安装Cpolar4. 配置公网地址5. 远程访问小结 6. 固定Cpolar公网地址7. 固定地址访问 本文主要介绍如何在Ubuntu系统使用Docker部署docker-android安卓模拟器&#xff0c;并结合cpolar内网穿透工具实现公网远程访问本地…

51建模网AR虚拟试用,让网购不再只靠想象!

在数字化的浪潮中&#xff0c;网购已成为现代人生活的一部分。然而&#xff0c;传统的网购模式常常因为无法直接试穿、试用商品&#xff0c;导致买家在收到商品后感到失望&#xff0c;特别是面对大件家居产品时&#xff0c;仅凭屏幕上的图片和尺寸描述&#xff0c;很难准确地把…

智能AI愈发强大,企业如何防范AI网络钓鱼攻击

随着AI技术的快速发展&#xff0c;如ChatGPT等智能化工具在各个领域得到了广泛应用。然而&#xff0c;这些工具的普及也给网络安全带来了新的挑战。AI模型的自然语言生成功能使得网络钓鱼攻击更加智能化和隐蔽化&#xff0c;攻击者能够利用AI技术生成高度逼真的欺骗性邮件和其他…

深度学习之基于YoloV5人体姿态摔倒识别分析报警系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 随着人口老龄化的加剧和人们对健康安全的日益关注&#xff0c;摔倒事件在老年人、幼儿、体育运…

分布式文件系统minIo

分布式文件系统 什么是分布式文件系统 一个计算机无法存储海量的文件&#xff0c;通过网络将若干计算机组织起来共同去存储海量的文件&#xff0c;去接收海量用户的请求&#xff0c;这些组织起来的计算机通过网络进行通信&#xff0c;如下图&#xff1a; 好处&#xff1a; 1、…

怎么ai思维导图自动生成?推荐这三个工具

怎么ai思维导图自动生成&#xff1f;随着人工智能&#xff08;AI&#xff09;技术的不断发展&#xff0c;其在各个领域的应用也日益广泛。在思维导图这一领域&#xff0c;AI技术的引入不仅极大地提高了制图效率&#xff0c;还为用户提供了更多样化、个性化的制图体验。本文将为…

基于消息中间件的异步通信机制在系统解耦中的优化与实现

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; ✨✨ 帅哥美女们&#xff0c;我们共同加油&#xff01;一起进步&am…

GPT-SoVITS语音克隆部署与使用

GPT-SoVITS是一款强大的少量样本语音转换与语音合成开源工具。当前&#xff0c;GPT-SoVITS实现了如下几个方面的功能&#xff1a; 由参考音频的情感、音色、语速控制合成音频的情感、音色、语速可以少量语音微调训练&#xff0c;也可不训练直接推理可以跨语种生成&#xff0c;…

【AI】试用 ai 提取文章内容尝试

电梯产业面临这样一个问题&#xff0c;因为太多的品牌&#xff0c;将近 400 多个&#xff0c;甚至有宝马&#xff0c;奥迪&#xff0c;你敢相信&#xff0c;一家造汽车的造过电梯?不过好像想想也是&#xff0c;电梯是第二大交通工具&#xff0c;电梯从某种意义上来说&#xff…

无网环境禁止 WPS 提示登录,且基本功能按钮可用

目前 WPS 升级后&#xff0c;每次打开都会提示你登录 WPS&#xff0c;并且在未登录之前所有基本功能按钮是置灰状态&#xff0c;无法使用。 如此一来&#xff0c;在内网或无网环境&#xff0c;我们无法登陆 WPS &#xff0c;就给我们的使用带来了极大的不便&#xff0c;那么有没…

全网最全面的由浅到深的Kotlin基础教程(七)

前言 本篇文章接着上一篇文章全网最全面的由浅到深的Kotlin基础教程&#xff08;六&#xff09;继续进阶学习kotlin&#xff0c;建议看完上一篇文章&#xff0c;再来看本篇文章。本篇主要分析一些常用的kotlin函数源码&#xff0c;以及用kotlin简单实现Rxjava的几个操作符。坚…

全志A133 android10 调试vibrator震动马达

一&#xff0c;前提条件 全志使用的马达配置为上电震动&#xff0c;下电停止&#xff0c;需测试硬件是否正常。马达供电最好为独立供电&#xff0c;避免干扰。 二&#xff0c;适配步骤 1. dts中增加马达配置 motor_para {compatible "allwinner,sunxi-vibrator";…

BGP实验:联邦和发射器实验

BGP实验&#xff1a;联邦和发射器实验 一、实验拓扑 二、实验要求及分析 实验要求&#xff1a; 1、AS1存在两个环回&#xff0c;一个地址为192.168.1.0/24&#xff0c;该地址不能再任何协议中宣告&#xff1b; ​ AS3存在两个环回&#xff0c;一个地址为192.168.2.0/24&…

解决ModuleNotFoundError: No module named ‘open_clip‘问题

在使用stable diffusion大模型时&#xff0c;添加一些模型后启动df页面报错&#xff1a;ModuleNotFoundError: No module named open_clip 使用 pip install open_clip命令下载失败&#xff0c;报错&#xff1a; Looking in indexes: https://mirrors.aliyun.com/pypi/simple…

Redis【B站面试题】

前言 2023-07-27 22:44:59 出自B站 灰灰的Java面试 Redis Redis为什么快&#xff1f; 1.纯内存KV操作 Redis的操作都是基于内存的&#xff0c;CPU不是 Redis性能瓶颈,&#xff0c;Redis的瓶颈是机器内存和网络带宽。 在计算机的世界中&#xff0c;CPU的速度是远大于内存的速…

深度学习之基于TensorFlow人脸表情识别

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 人脸表情识别是计算机视觉领域的重要研究方向之一&#xff0c;它在人机交互、情感分析、安全监控等领…

Java 变量和作用域:理解变量的声明、初始化及其作用域

在Java编程语言中&#xff0c;变量和作用域是两个核心概念。理解变量的声明、初始化以及它们的作用域对于编写健壮且高效的代码至关重要。 变量的声明与初始化 变量的声明 在Java中&#xff0c;变量的声明指的是定义变量的名称和类型。在Java中&#xff0c;变量声明的一般语…