一、if-else 结构

if 语句有三种格式:

1、单 if 语句(单分支结构)

语法格式:

if(条件表达式){

语句体;

执行流程:

首先判断条件表达式看其结果是 true 还是 false;

如果是 true 就执行语句体;

如果是 false 就不执行语句体。

流程图:

Tips:当 if 后面只有一条语句时,可以省略 “{}”,但为了增强程序的可读性最好不要省略。

2、if...else 语句(标准的 if 语句)(双分支结构)

语法格式:

if (条件表达式) {

执行代码块1;

} else {

执行代码块2;

}

执行流程:

首先判断关系表达式看其结果是 true 还是  false;

如果是 true 就执行语句体1;

如果是 false 就执行语句体2;

流程图:

3、if...else if...else 语句(多分支结构)

语法格式:

if (条件表达式1) {

执行语句1;

} else if (条件表达式2) {

执行语句2;

}

...

}else if (条件表达式n) {

执行语句n;

} else {

执行语句n+1;

}

执行流程:

首先判断关系表达式1 看其结果是 true 还是 false;

如果是 true就执行语句体1;

如果是 false 就继续判断关系表达式2看其结果是 true 还是 false;

如果是 true 就执行语句体 2;

如果是 false 就继续判断关系表达式... 看其结果是 true 还是  false;

.....

如果没有任何关系表达式为 true,就执行语句体 n+1

流程图:

4、if 语句和三元运算符的互换

在某些简单的应用中, 可以使用 if...else 语句和三元运算符互换使用的。这样看起来更简便一些。

当即可以使用三元运算符和 if 时,优先使用 三元运算符,看起来简洁,效率也高。

Demo:

public static void main(String[] args) {

int a = 10;

int b = 20;

//定义变量,保存a和b的较大值

int c;

if(a > b) {

c = a;

} else {

c = b;

}

//可以上述功能改写为三元运算符形式

c = a > b ? a:b;

}

5、if-else 使用说明

(1)条件表达式必须是布尔表达式(关系表达式或逻辑表达式)、布尔变量 ;

(2)语句块只有一条执行语句时,一对{}可以省略,但建议保留;

(3)if-else语句结构,根据需要可以嵌套使用 ;

(4)当 if-else 结构是“多选一”时,最后的 else 是可选的,根据需要可以省略 ;

(5)当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓,当多个条件是“包含”关系时,“小上大下 / 子上父下” ;

Demo:

public static void main(String[] args) {

int x = 4;

int y = 1;

if (x > 2)

if (y > 2)

System.out.println(x + y);

else //就近原则

System.out.println("x is " + x);

如果if 后面省略了 {},那么 else 会匹配到最新的 if(就近原则)。

二、switch-case 结构

1、switch-case 结构

语法格式:

switch(表达式) {

case 常量值1:

语句体1;

[break;]

case 常量值2:

语句体2;

[break;]

...

default:

语句体n+1;

[break;]

}

执行流程:

首先计算出表达式的值

其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结 束。

最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

流程图:

说明:

(1)多个 case 后面的数值不可以重复,不能是变量名或不确定的表达式值,切必须是常量值,不能声明范围;

(2)switch 语句中,表达式的六种数据类型,可以是byte,short,int,char,Enum(枚举JDK1.5之后),String(JDK1.7之后)

(3)根据switch表达式中的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应case结构中,调用其执行语句。

注意:当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构末尾结束为止。

(4)break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构;

(5)break 关键字是可选的;

(6)switch 语句格式可以很灵活:前后顺序可以颠倒,而且break语句还可以省略。匹配哪一个case就从哪一个位置向下执行,直到遇到了break或者整体结束为止;

(7)default 语句是可选的,也可以写到任意位置,不一定会写在最后

2、case 的穿透性

在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运 行,直到遇到break,或者整体switch结束。

Demo:

public static void main(String[] args) {

int i = 5;

switch (i){

case 0:

System.out.println("执行case0");

break;

case 5:

System.out.println("执行case5");

case 10:

System.out.println("执行case10");

default:

System.out.println("执行default");

}

}

上述程序中,执行case5后,由于没有break语句,程序会一直向后走,不会在判断case,也不会理会break,直接 运行完整体switch。

Tips:在使用 switch 语句时,写上  break 语句是非常有必要的。

3、switch与 if

(1)凡是可以使用switch-case的结构,都可以转换为if-else。反之,不成立。

(2)写分支结构时,当发现既可以使用switch-case,(同时,switch中表达式的取值情况不太多),又可以使用if-else时,我们优先选择使用switch-case。原因:switch-case执行效率稍高。

java多分支流程图_Java 流程控制 之 分支结构(条件判断)相关推荐

  1. JAVA语言中流程控制(顺序结构、判断语句、循环语句)

    流程控制: 程序在执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的,所以,我们必须清楚每条语句的执行流程.而且,很多时候我们要通过控制语句的执行顺序来实现想要的功能.java中流程控制有:顺 ...

  2. 4、java中的流程控制(程序结构)

            说一下java的流程控制(程序结构),其实对于计算机而言,无非就那几类执行流程(程序结构),程序从头到尾依次执行每一行代码,这就是顺序结构:也可能在执行过程中遇到条件判断,造成程序运行 ...

  3. 一起来学java!!! day003 流程控制01 你掉了金斧头还是银斧头?

    java day003 流程控制 01 流程控制之分支结构 1. if 语句 if (/* 条件语句 */) {/*功能语句块*/} 流程:当执行if语句时,先会判断小括号内的条件语句,若条件语句为t ...

  4. 流程控制之顺数结构和选择结构

    流程控制之顺数结构 顺序结构 java的基本结构就是顺序结构,除非指明,否则就是按照顺序结构一句一句执行 顺序结构是最简单的算法结构 语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个一 ...

  5. 【零基础 快速学Java】韩顺平 p104-147 流程控制:顺序、分支、循环、跳转 控制语句 (if、for、while、dowhile、break、continue、return)

    课程 p104-147 流程控制介绍 在程序种,程序运行的流程控制决定程序是如何执行的. 主要有三大流程控制语句: 顺序控制 分支控制 循环控制 顺序 简单理解就是从头到尾. 分支控制if-else ...

  6. Java程序流程控制(顺序结构、分支结构、循环结构、if-else、switch-case、for、while、do-while、break、continue、return)

    流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块. 其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:         顺序结构         ...

  7. java 流程控制_Java流程控制

    依旧是用Xmind来显示Java流程控制的大致内容: ---------------------------------------------------- Variable举例: public c ...

  8. java 判断对象为控制_Java流程控制

    Java流程控制 1.Scanner对象 ①java.util.Scanner是Java5的新特性,可以通过Scanner类来获取用户的输入. ②基本语法: 1 Scanner s=new Scann ...

  9. java流程控制if_java程序流程控制(分支结构之 if-else)

    if语句三种格式: 1.if(true){ //代码执行 } 2.if(条件表达式){ //代码执行 }else{ //代码执行 } 3.if(条件表达式){ //执行代码块 }else if(条件表 ...

  10. java第五章循环结构总结_Java理论学习三分钟-流程控制之循环结构(3)

    一.循环结构概念引入 在生活中会出现这样的编写程序,计算1+2+3+--+100的值 int a1=1; int a2=2; int a3=3; -- int a100=100; a100=a1+a2 ...

最新文章

  1. 二维数组和二级指针关系浅析
  2. Use pgpool and pgbouncer limit global concurrent SQL Execution
  3. C++中类的静态成员变量和静态成员函数
  4. P4391 [BOI2009]Radio Transmission 无线传输
  5. 解决 supervisor中stop django进程不能真正的停止 问题
  6. vtkSuperquadricSource:创建以原点为中心的多边形超二次曲面
  7. 缺失值填充6——拉格朗日插值法填充序列缺失值
  8. linux目标文件链接命令,ld 命令:将目标文件链接为可执行程序 - dute.org
  9. jmeter脚本录制作业_399
  10. Windows 下的文件被占用问题解决
  11. 怎样实现EDIUS中素材小范围精确移动
  12. linux抓包及分析
  13. Linux系统基本操作及命令详解
  14. android 动态 设置layout_weight,android - 如何从代码中动态设置layout_weight属性?
  15. Linux常用命令(压缩解压命令)
  16. 《JeolOnSoftware》
  17. 误差反向传播的C++实现
  18. 网页弹窗插件layer.js的使用
  19. Windows下使用Darknet训练自己的数据集(模型:yolov4-tiny、数据集:垃圾分类)
  20. 知识图谱学习笔记八(知识问答)

热门文章

  1. 前端小白系列——打字游戏
  2. SQL Server 2016 安装
  3. 软件设计说明书模版(申请软件著作权可供参考)
  4. 单片机c语言带参数子函数,单片机C语言教程:C51函数
  5. html5播放倍速,[html5]html5倍速播放功能源代码实例
  6. delphi7连接oracle,delphi7.0连接oracle数据库的.doc
  7. sql2005下载地址
  8. 前端工程师最常用的字体图标库
  9. qtp11安装及入门
  10. hasp hl加密狗驱动