Java学习笔记:流程控制之分支语句

Java学习笔记:流程控制之分支语句

流程控制

       流程控制(flowof control是程序执行动作的顺序。Java和其他大多数其他编程语言,都使用了两种语句来规范控制流程:分支语句(branchingstatement会从两个或多个可能的动作列表中选择一个动作;循环语句(loopstatement会不断地重复一个动作,直到满足某种停止条件为止。

1、布尔表达式

在介绍流程控制之前,有必要介绍下布尔表达式

Boolean_Expression,布尔表达式,顾名思义,这是一个表达式,但结果是一个布尔值,也就是说这个表达式的值非真即假(必须是truefalse,与C++/C不同,Java中不认为0是假)。这个真假是通过逻辑运算符计算得到的,关于逻辑运算符,请参考这篇文章

income >=1000;这就是一个布尔表达式。如果income的值为20002000大于1000,那么这个布尔表达式的值为true,如果income的值为800800不大于1000,那么这个布尔表达式的值为false。也就是说,布尔表达式是一个判断式。在不同的情况下得出真或假的结果。

布尔表达式要用括号括起来。由于单一的布尔表达式是一个布尔值。针对布尔值可以用逻辑运算符进行操作。

例如,需要同时满足两个条件,那么就可以用以下的表达方式:

((sub_Boolean_Expression1)&&(sub_Boolean_Expression1));
        注意括号的使用。 && 运算符是表达“与”,当这两个子表达式都为真的时候,整个大的表达式才为真。具体示例:
((income>=1000)&&(income <= 5000));
      这就是限定 income必须在 10005000之间。 注意: Java 不允许连续的判断,如 5000<= income <= 1000 。只能将小的判断式(布尔表达式)用逻辑运算符和括号组织起来,组成大的布尔表达式。

如果有两个条件,只需要满足其中一个条件,那么可以用||运算符,用来表示“或”。如((income>=5000)||(income <= 1000));表示income大于5000或小于1000

如果想取一个条件的相反值,比如想得到income不大于1000的情况下,可以选择布尔表达式

(income< 1000)或 !(income >=1000);

      第一个表达式的意思是: income小于 1000,第二个表达式是取 income大于等于 1000的相反情况。这里 !”的作用是

  1. If-else分支语句

对分支语句的讨论,将以一种能在两种可能的备选动作中进行选择的Java语句作为开始。分支语句中必须有条件判断式(布尔表达式),当程序运行到分支语句时,会选择符合相应的判断式,并执行其分支语句。

If-else语句

if-else语句根据判定条件的真假来执行两种操作中的一种,基本语法为:

If (Boolean_Expression)
      Statement_1;
Else
      Statement_2;
        如果 Boolean_Expression为真,就执行 Statement_1;否则,执行 Statement_2

举例:

If (time < limit)
      System.out.printlin(“Youmade it.”);
Else
      System.out.println(“Youmissed the deadline.”);

If语句(省略else部分):

If(Boolean_Expression)
      Action_Statement;
          如果 Boolean_Expression为真,就执行 Action_Statement,否则什么也不会发生,程序跳过该 if语句执行下一条语句。

复合语句

      如果要在一个选择中包含多条语句,就要像下面的例子这样用花括号将这些句子组织起来:

if(Boolean_Expression) 
{
      statement1 ;
      statement2 
}
else
{
      statement3 ;
      statement4 ;
}
         当条件 Boolean_Expression为真时,执行 statement1statement2(注意当一个选择分支中有多条语句需要执行时,需要将这些语句用大括号括起来形成一个整体)。当 Boolean_Expression为假时,执行 statement3statement4

嵌套语句

      上述中介绍的只能选择两种情况:income大于等于1000income小于1000两种情况。

       如果在income大于1000的情况下,又要考虑income10005000之间和income大于5000两种情况怎么办?这就要用到了嵌套语句。就是在一条if-else语句中使用另一条if-else语句。如下:

if(Boolean_Expression1) 
{
       if(Boolean_Expression2) 
       {
              statement1 ;
       }
       else
       {
              Statement2 ;
       }
}
else
{
       statement3 ;
}
        这里,先判断表达式 Boolean_Expression1的真假,如果为真,执行 if里面的语句块;如果为假,执行 else里面的语句块。假设 Boolean_Expression1为真,那么将要执行第一层 if的语句块,这个语句块里是另一个 if-else语句块。所以判断 Boolean_Expression2的真假,当为真时,执行 statement1 ;。为假时,执行 statement2 ;然后这整个 if-else语句就执行结束了。

     注意:嵌套语句中的ifelse要一一对应:外层的对应外层的,内层的对应内层的。

多条件选择

    如果选择情况不止两种,那么可以用elseif来添加选择条件,基本格式如下:

if(Boolean_Expression1)
{ 
        statement1;
}
elseif(Boolean_Expression2)
{ 
        statement2;
}
.
.
.
elseif(Boolean_ExpressionM)
{ 
        statementM;
}
Else
{
        statementN;
}

        这里执行的时候,任意两个Boolean_Expression不能同时为真。程序会执行当时条件下,Boolean_Expression为真的那个语句块下的语句。

需要注意的地方:缩进不是必须的,但为了阅读的方便,强烈建议每一个对应的ifelse具有相同的缩进。如果每个分支语句中需要执行的语句超过一条,必须用花括号将语句组织起来。(嵌套的内部if-else语句中如果只有一条执行语句,如嵌套语句那一节介绍的例子一样,虽然可以不用花括号,但从方便阅读代码的角度来看,依然建议使用)。

如这一系列文章的第一篇的开头所述,Java中每个单一的语句后都必须以分号结尾。

else子句不能单独作为语句使用,它必须和if配对使用。else总是与离它最近的if配对。可以通过使用大括号{}来改变配对关系。

2.switch语句

分支语句不仅可以根据布尔表达式进行分支选择,还可以根据具体的值来选择分支。假设一种情景,测验中得到A的是90分以上,得到B的是80——90分。得到C的是70-80分。那么就可以根据这些具体的值来使用switch语句。(当然,也可以判断得到的成绩是不是ABC的布尔表达式加多分支if-else语句来实现,但是用switch语句更简单,等会会有一个例子来进行对比)。

Switch语句是分分支语句,它会根据一个整数或字符表达式的值来决定进入哪条分支。基本语法:

switch(control_expression)
{ 
        case value1:
                statement1; 
                break; 
        case value2:
                statement2; 
                break; 
        ………… 
        case valueN:
                statemendN; 
                break; 
        [default:defaultStatement;] 
}

解释:

跟在关键字switch后面,以括号括起来的部分称为控制表达式(control_expression),这个表达式必须返回某种简单类型的值(如整型、实型、字符型),执行switch语句时,先将控制表达式返回的某个值,将这个值与每个case子句中的值相比。如果匹配成功,则执行该case子句后的语句序列。       
        每一个case分支就是一个选择分支,case分支可以有任意个。跟在关键字case后面的是一个常量值,如value1,每个case分支中的值必须是不同的。

Default分支是任选的(可以有default语句,也可以没有)。当表达式的值与任一case分支中的值都不匹配时,程序执行default后面的语句。如果表达式的值与任一case子句中的值都不匹配且没有default子句,则程序不作任何操作,而是直接跳出switch语句。

注意:break语句用来在执行完一个case分支后,使程序跳出switch语句,即终止switch语句的执行。因为case分支只是起到一个标号的作用,用来查找匹配的入口并从此处开始执行,对后面的case分支不再进行询问是否匹配,而是直接执行其后的语句序列,因此该在每个case分支后,要用break来终止后面的case分支语句的执行。在一些特殊情况下,多个不同的case值要执行一组相同的操作,这时可以不用break

因为每一个case分支后面,都有一个冒号,所以case分支中包括多个执行语句时,可以不用大括号{}括起。

编程示例:

int code = 2;
switch(code)
{
        case 1:
                System.out.println(“code is 1.”);
                Break;
        case 2:
                System.out.println(“code is2.”);
                Break;
        case 3:
                System.out.println(“code is 3.”);
                Break;
}
        如果用 if-else语句,会有点麻烦。如下:
int code = 2;
If(code ==1)
{
        System.out.println(“code is 1.”);
}
Else if(code == 2)
{
        System.out.println(“code is 2.”);
}
Else f(code == 3)
{
        System.out.println(“code is 3.”);
}
        这还是最简单的情况下,复杂情况下, switch语句会比 if-else语句简洁许多。

注意:

       1、在switch语句中使用break语句:如果只期望执行一条case分支,那么就要在那个case分支结束的地方加上break语句。不然当程序找到匹配的分支后,该分支后面的分支将不进行判断,而是直接执行。

2、在if-else语句中,判断连个值是否相等,使用的是Java中的等于号“==”,而不是赋值号“=”

3、在任何两个大括号之间声明的变量只能在这个大括号内部使用。所以,若在一个分支内部声明了一个变量,那只能在这个分支内部使用。如果想在分支外部使用这个变量,那么就要在分支外部先声明好这个变量。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值