Java 的分支

分支控制有三种:单分支,双分支,多分支。

单分支

基本语法:

if (条件表达式){执行代码块;
}

程序示例:

import java.util.Scanner;public class If01 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("输入你的年龄:");int age = sc.nextInt();if (age > 18) {System.out.println("你的年龄大于18。");}}
}

双分支

基本语法:

if (条件表达式) {执行代码块1;
} else {执行代码块2;
}

程序示例:

import java.util.Scanner;public class If02 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("输入你的年龄:");int age = sc.nextInt();if (age > 18) {System.out.println("你已经超过18岁了。");} else {System.out.println("你还未成年。");}}
}

多分支

基本语法:

if (条件表达式1) {执行代码块1;
} 
else if (条件表达式2) {执行代码块2;
}
......
else{执行代码块n;
}

多分支最后可以没有 else。

如果没有 else,当前面的所有 if 都不成立时,将什么都不执行。

switch

switch(表达式) 中的表达式数据类型要么和 case 常量中常量的类型一致,要么是可以自动类型转换为可以进行比较的类型。

switch(表达式) 中的表达式的值的类型必须是以下类型中的一种:byte,short,int,char,enum(JKD 5 之后支持),String(JDK 7 之后支持)。

case 常量中的常量可以是常量表达式,即值为常量的表达式,如 ‘b’ + 1。case 标签还可以是字符串或枚举类型常量。

default 可以省略。

default 的位置随意。

多个 case 中的值不允许重复。

case 后面如果没有 break 将会穿透。如果多个 case 的语句体相同,则可以利用穿透来简化代码。

程序示例:

public static void main(String[] args) {char c = 'a';switch (c) {case 10:System.out.println("ok1");break;case 97: // 和此处匹配上System.out.println("ok2");      // 输出 ok2break;default:System.out.println("ok3");break;}
}

程序示例:

import java.util.Scanner;public class test {public static void main(String[] args) {// 从键盘输入学生成绩,如果学生成绩大于 60 则输出合格,否则输出不合格// 要求用 switch 完成System.out.println("输入学生成绩:");Scanner sc = new Scanner(System.in);int score = sc.nextInt();switch (score / 60) {case 0:System.out.println("不合格");break;case 1:System.out.println("合格");break;}}
}

程序示例:

// 这是从 JDK12 开始引入的新特性,用花括号括起来的语句可以省略 break,因为不会发生穿透现象。
public class test {public static void main(String[] args) {int number = 1;switch (number) {case 1 -> {System.out.println("一");break;}case 2 -> {System.out.println("二");break;}case 3 -> {System.out.println("三");break;}default -> {System.out.println("没有这种选项");break;}}}
}

省略 break:

public class test {public static void main(String[] args) {int number = 1;switch (number) {case 1 -> {System.out.println("一");}case 2 -> {System.out.println("二");}case 3 -> {System.out.println("三");}default -> {System.out.println("没有这种选项");}}}
}

用花括号括起来的语句块只有一条语句时,可以省略花括号:

// 用花括号括起来的语句块只有一条语句时,可以省略花括号
public class test {public static void main(String[] args) {int number = 1;switch (number) {case 1 -> System.out.println("一");case 2 -> System.out.println("二");case 3 -> System.out.println("三");default -> System.out.println("没有这种选项");}}
}

如果多个 case 的语句体相同,则可以利用穿透来简化代码。未简化的代码:

import java.util.Scanner;public class test {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("请输入星期数:");int number = sc.nextInt();switch (number) {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;}}
}

利用 case 穿透进行简化:

import java.util.Scanner;public class test {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("请输入星期数:");int number = sc.nextInt();switch (number) {case 1:case 2:case 3:case 4:case 5:System.out.println("工作日");break;case 6:case 7:System.out.println("休息日");break;default:System.out.println("输入错误");break;}}
}

进一步简化:

import java.util.Scanner;public class test {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("请输入星期数:");int number = sc.nextInt();switch (number) {case 1, 2, 3, 4, 5:System.out.println("工作日");break;case 6, 7:System.out.println("休息日");break;default:System.out.println("输入错误");break;}}
}

更进一步简化:

import java.util.Scanner;public class test {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("请输入星期数:");int number = sc.nextInt();switch (number) {case 1, 2, 3, 4, 5 -> System.out.println("工作日");case 6, 7 -> System.out.println("休息日");default -> System.out.println("输入错误");}}
}

与所有表达式类似,switch 表达式也有一个值,可以将 switch 的结果赋值给一个变量。

程序示例:

import java.util.Scanner;public class SwitchDemo {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("请输入一个季节:");String season = sc.next();int numLetters = switch (season) {case "spring", "summer", "winter" -> 6;case "fall" -> 4;default -> -1;};System.out.println(numLetters);}
}

执行结果:

请输入一个季节:fall
4

switch 表达式中使用枚举常量时,不需要为各个标签提供枚举名,这可以从 switch 值推导得出。

程序示例:

public class SwitchDemo2 {public static void main(String[] args) {enum Size {SMALL, MEDIUM, LARGE, EXTRA_LARGE};Size itemSize = Size.SMALL;String label = switch (itemSize) {case SMALL -> "S"; // no need to use Size.SMALLcase MEDIUM -> "M";case LARGE -> "L";case EXTRA_LARGE -> "XL";}; // 在这个例子中,完全可以省略 default, 因为每一个可能的值都有相应的一个 caseSystem.out.println(label);  // S}
}

使用整数或 String 操作数的 switch 表达式必须有一个 default,因为不论操作数值是什么,这个表达式都必须生成一个值。

如果操作数为 null,会抛出一个 NullPointerException。

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

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

相关文章

【JAVA WEB实用技巧与优化方案】如何通过javacore、heapdump来排查JVM线程和内存问题

文章目录 介绍什么是javacore ? javacore可以用来做哪些分析?什么是HeapDump?一、输出JAVACORE 和 DUMP文件1.输出JAVACORE通过`kill -3 [pid]` 来输出javacore通过jstack 输出Javacore文件2.输出 dump 文件二、javacore文件和heapdump文件的分析工具使用详情javacore 工具i…

Cesium开发环境搭建(一)

1.下载安装Node.js 进入官网地址下载安装包 Node.js — Download Node.js https://cdn.npmmirror.com/binaries/node/ 选择对应你系统的Node.js版本,这里我选择的是Windows系统、64位 安装完成后,WINR,输入node --version,显示…

React + SpringBoot实现图片预览和视频在线播放,其中视频实现切片保存和分段播放

图片预览和视频在线播放 需求描述 实现播放视频的需求时,往往是前端直接加载一个mp4文件,这样做法在遇到视频文件较大时,容易造成卡顿,不能及时加载出来。我们可以将视频进行切片,然后分段加载。播放一点加载一点&am…

tcp aimd 窗口的推导

旧事重提,今天用微分方程的数值解观测 tcp aimd 窗口值。 设系统 AI,MD 参数分别为 a 1,b 0.5,丢包率由 buffer 大小,red 配置以及线路误码率共同决定,设为 p,窗口为 W,则有&…

云原生技术助力某国际化商业集团打造数字化转型新引擎

某国际化商业集团(以下简称:集团),成立于1988年,现已发展成为拥有总资产800多亿元,员工13000多人,涵盖港口码头、石油化工、国际贸易等产业于一体的国际化现代化企业集团,连续多年进…

HAL STM32F1 通过查表方式实现SVPWM驱动无刷电机测试

HAL STM32F1 通过查表方式实现SVPWM驱动无刷电机测试 📍相关篇《基于开源项目HAL STM32F4 DSP库跑SVPWM开环速度测试》 ✨针对STM32F1系列,没有专门的可依赖的DSP库,为了实现特定函数的浮点运算快速计算,通过查表方式来实现&#…

番外篇 | 利用华为2023最新Gold-YOLO中的Gatherand-Distribute对特征融合模块进行改进

前言:Hello大家好,我是小哥谈。论文提出一种改进的信息融合机制Gather-and-Distribute (GD) ,通过全局融合多层特征并将全局信息注入高层,以提高YOLO系列模型的信息融合能力和检测性能。通过引入MAE-style预训练方法,进一步提高模型的准确性。🌈 目录 🚀1.论文解…

如何解锁植物大战僵尸杂交版v2.0.88所有植物

如何解锁植物大战僵尸杂交版v2.0.88所有植物 前言安装相关软件快速解锁方法 前言 经过探索植物大战僵尸杂交版植物解锁和关卡有关,所以通过所有关卡就可以解锁所有植物。 安装相关软件 1.安装植物大战僵尸 2.安装Hex Editor Neo 快速解锁方法 本文参考如何修改…

<vs2022><问题记录>visual studio 2022使用console打印输出时,输出窗口不显示内容

前言 本文为问题记录。 问题概述 在使用visual studio 2022编写代码时,如C#,在代码中使用console.writeline来打印某些内容,以便于观察,但发现输出窗口不显示,而代码是完全没有问题的。 解决办法 根据网上提供的办法…

深入解析力扣183题:从不订购的客户(LEFT JOIN与子查询方法详解)

在本篇文章中,我们将详细解读力扣第183题“从不订购的客户”。通过学习本篇文章,读者将掌握如何使用SQL语句来解决这一问题,并了解相关的复杂度分析和模拟面试问答。每种方法都将配以详细的解释,以便于理解。 问题描述 力扣第18…

Java Web学习笔记23——Vue项目简介

Vue项目简介: Vue项目-创建: 命令行:vue create vue-project01 图形化界面:vue ui 在命令行中切换到项目文件夹中,然后执行vue ui命令。 只需要路由功能。这个路由功能,开始不是很理解。 创建项目部保存…

html+css示例

HTML HTML(超文本标记语言)和CSS(层叠样式表)是构建和设计网页的两种主要技术。HTML用于创建网页的结构和内容,而CSS用于控制其外观和布局。 HTML基础 HTML使用标签来标记网页中的不同部分。每个标签通常有一个开始…

【原创】海为PLC与RS-WS-ETH-6传感器的MUDBUS_TCP通讯

点击“蓝字”关注我们吧 一、关于RS-WS-ETH-6传感器的准备工作 要完成MODBUS_TCP通讯,我们必须要知道设备的IP地址如何分配,只有PLC和设备的IP在同一网段上,才能建立通讯。然后还要选择TCP的工作模式,来建立设备端和PC端的端口号。接下来了解设备的报文格式,方便之后发送…

前端:快捷 复制chrome 控制台打印出来的 数组对象

程序中console.log出来的对象。按照以下步骤操作 1.右键点击需要处理的对象,会出现Store as global variable,点击 2.点击 Store as global variable 控制台会出现 3.在控制台 输入 copy(temp1) 这样对象就复制到了你的黏贴面板里面 在代码中直接 c…

基于STM32开发的智能语音控制系统

目录 引言环境准备智能语音控制系统基础代码实现:实现智能语音控制系统 4.1 语音识别模块数据读取4.2 设备控制4.3 实时数据监控与处理4.4 用户界面与反馈显示应用场景:语音控制的家居设备管理问题解决方案与优化收尾与总结 1. 引言 随着人工智能技术…

Vuepress 2从0-1保姆级进阶教程——标准化流程

Vuepress 2 专栏目录 1. 入门阶段 Vuepress 2从0-1保姆级入门教程——环境配置篇Vuepress 2从0-1保姆级入门教程——安装流程篇Vuepress 2从0-1保姆级入门教程——文档配置篇Vuepress 2从0-1保姆级入门教程——范例与部署 2.进阶阶段 Vuepress 2从0-1保姆级进阶教程——全文搜索…

Inpaint9.1软件下载附加详细安装教程

软件简介: Inpaint 是个人开发者Max开发的图片处理软件,可以高效去除水印,修复照片等。使用方法和操作都很简单,非常适合不会PS等软件的小白用户。 安 装 包 获 取 地 址: Iinpaint win版:​​https://souurl.cn/b…

了解JVM中的Server和Client参数

了解JVM中的Server和Client参数 Java虚拟机(Java Virtual Machine,JVM)作为Java程序运行的核心,提供了多种参数来优化和调整程序的性能和行为。其中,-server和-client是两个重要的参数,分别用于配置JVM在服…

【Android面试八股文】synochnized修饰普通方法和静态方法的区别?什么是原子性、可见性、有序性?

文章目录 synochnized修饰普通方法和静态方法的区别?什么是原子性、可见性、有序性?这道题想考察什么 ?考察的知识点考生应该如何回答synchronized 的基本原理synchronized 修饰普通方法和静态方法的区别synchronized定义同步代码块synochnized修饰普通方法和静态方法的区别…

微生物共生与致病性:动态变化与识别挑战

谷禾健康 细菌耐药性 抗生素耐药性细菌感染的发生率正在上升,而新抗生素的开发由于种种原因在制药行业受重视程度下降。 最新在《柳叶刀-微生物》(The Lancet Microbe)上,科学家提出了基于细菌适应性、竞争和传播的生态原则的跨学…