查看: 6463|回复: 12

[学习笔记] Java 分支结构 - if...else/switch详解


17-3-30 06:23:00 | [复制链接]

73

主题

206

帖子

485

积分

牛人

Rank: 3Rank: 3

发表于 17-3-29 14:26:08 | 显示全部楼层 |阅读模式
Java分支结构-if...else/switch
顺序结构只能顺序执行,不能进行判断和选择,因此需要分支结构。
Java 有两种分支结构:


if 语句
switch 语句


if 语句
一个 if 语句包含一个布尔表达式和一条或多条语句。

语法
if 语句的用语法如下:
  1. if(布尔表达式)
  2. {
  3.    //如果布尔表达式为true将执行的语句
  4. }
复制代码
如果布尔表达式的值为 true,则执行 if 语句中的代码块,否则执行 if 语句块后面的代码。

实例代码
  1. public class Test {

  2.    public static void main(String args[]){
  3.       int x = 10;

  4.       if( x < 20 ){
  5.          System.out.print("这是 if 语句");
  6.       }
  7.    }
  8. }
复制代码

运行结果如下
  1. 这是 if 语句
复制代码

if...else语句
if 语句后面可以跟 else 语句,当 if 语句的布尔表达式值为 false 时,else 语句块会被执行。

语法
if…else 的用法如下:
  1. if(布尔表达式){
  2.    //如果布尔表达式的值为true
  3. }else{
  4.    //如果布尔表达式的值为false
  5. }
复制代码

实例代码
  1. public class Test {

  2.    public static void main(String args[]){
  3.       int x = 30;

  4.       if( x < 20 ){
  5.          System.out.print("这是 if 语句");
  6.       }else{
  7.          System.out.print("这是 else 语句");
  8.       }
  9.    }
  10. }
复制代码

运行结果如下
  1. 这是 else 语句
复制代码

if...else if...else 语句
▶if 语句后面可以跟 elseif…else 语句,这种语句可以检测到多种可能的情况。
▶使用 if,else if,else 语句的时候,需要注意下面几点:
▶if 语句至多有 1 个 else 语句,else 语句在所有的 elseif 语句之后。
▶if 语句可以有若干个 elseif 语句,它们必须在 else 语句之前。
▶一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行。

语法
if...else 语法格式如下:
  1. if(布尔表达式 1){
  2.    //如果布尔表达式 1的值为true执行代码
  3. }else if(布尔表达式 2){
  4.    //如果布尔表达式 2的值为true执行代码
  5. }else if(布尔表达式 3){
  6.    //如果布尔表达式 3的值为true执行代码
  7. }else {
  8.    //如果以上布尔表达式都不为true执行代码
  9. }
复制代码

实例代码
  1. public class Test {
  2.    public static void main(String args[]){
  3.       int x = 30;

  4.       if( x == 10 ){
  5.          System.out.print("Value of X is 10");
  6.       }else if( x == 20 ){
  7.          System.out.print("Value of X is 20");
  8.       }else if( x == 30 ){
  9.          System.out.print("Value of X is 30");
  10.       }else{
  11.          System.out.print("这是 else 语句");
  12.       }
  13.    }
  14. }
复制代码

运行结果如下
  1. Value of X is 30
复制代码

嵌套的 if…else 语句
使用嵌套的 if…else 语句是合法的。也就是说你可以在另一个 if 或者 elseif 语句中使用 if 或者 elseif 语句。

语法
嵌套的 if…else 语法格式如下:
  1. if(布尔表达式 1){
  2.    ////如果布尔表达式 1的值为true执行代码
  3.    if(布尔表达式 2){
  4.       ////如果布尔表达式 2的值为true执行代码
  5.    }
  6. }
复制代码
你可以像 if 语句一样嵌套 else if...else。

实例代码
  1. public class Test {

  2.    public static void main(String args[]){
  3.       int x = 30;
  4.       int y = 10;

  5.       if( x == 30 ){
  6.          if( y == 10 ){
  7.              System.out.print("X = 30 and Y = 10");
  8.           }
  9.        }
  10.     }
  11. }
复制代码

运行结果
  1. X = 30 and Y = 10
复制代码

switch 语句
switch 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。

语法
switch 语法格式如下:
  1. switch(expression){
  2.     case value :
  3.        //语句
  4.        break; //可选
  5.     case value :
  6.        //语句
  7.        break; //可选
  8.     //你可以有任意数量的case语句
  9.     default : //可选
  10.        //语句
  11. }
复制代码

switch 语句有如下规则

▶switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串类型了,同时 case 标签必须为字符串常量或字面量。

▶switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。

▶case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。

▶当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。

▶当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。

▶switch 语句可以包含一个 default 分支,该分支必须是 switch 语句的最后一个分支。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。

实例代码
  1. public class Test {
  2.    public static void main(String args[]){
  3.       //char grade = args[0].charAt(0);
  4.       char grade = 'C';

  5.       switch(grade)
  6.       {
  7.          case 'A' :
  8.             System.out.println("优秀");
  9.             break;
  10.          case 'B' :
  11.          case 'C' :
  12.             System.out.println("良好");
  13.             break;
  14.          case 'D' :
  15.             System.out.println("及格");
  16.          case 'F' :
  17.             System.out.println("你需要再努力努力");
  18.             break;
  19.          default :
  20.             System.out.println("未知等级");
  21.       }
  22.       System.out.println("你的等级是 " + grade);
  23.    }
  24. }
复制代码

运行结果如下
  1. 良好
  2. 你的等级是 C
复制代码

0

主题

143

帖子

314

积分

牛人

Rank: 3Rank: 3

发表于 17-3-29 15:51:47 | 显示全部楼层
千锋同学们太牛X了!!

1736

主题

1911

帖子

1万

积分

QF Team

Rank: 7Rank: 7Rank: 7

社区QQ达人

发表于 17-3-29 17:39:43 | 显示全部楼层
秋天虽然到了。但是。。依旧热

13

主题

207

帖子

468

积分

牛人

Rank: 3Rank: 3

发表于 17-3-29 17:49:52 | 显示全部楼层
千锋就是给力

12

主题

191

帖子

432

积分

牛人

Rank: 3Rank: 3

发表于 17-3-29 19:02:28 | 显示全部楼层
LZ爆照

1

主题

136

帖子

302

积分

QF Team

Rank: 7Rank: 7Rank: 7

发表于 17-3-29 21:14:21 | 显示全部楼层
LZ爆照

9

主题

206

帖子

469

积分

牛人

Rank: 3Rank: 3

发表于 17-3-29 23:06:27 | 显示全部楼层
12345哥们好帅。。

1736

主题

1911

帖子

1万

积分

QF Team

Rank: 7Rank: 7Rank: 7

社区QQ达人

发表于 17-3-30 00:48:00 | 显示全部楼层
自家人来顶贴,不要问我是谁

73

主题

245

帖子

545

积分

大牛

Rank: 4

发表于 17-3-30 01:03:21 | 显示全部楼层
哈哈,在这里玩心情能变好一大截。

0

主题

141

帖子

309

积分

牛人

Rank: 3Rank: 3

发表于 17-3-30 06:23:00 | 显示全部楼层
码字辛苦,惮思竭虑~加油
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

订阅|小黑屋|手机版|千锋教育论坛 ( 京ICP备12003911号-3 )

GMT+8, 20-5-25 07:15 , Processed in 0.395079 second(s), 46 queries .

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表