第四章 控制执行流程

代码映星客
• 阅读 1084

  在Java中,语句的种类可分为:表达式语句声明语句控制流程语句。下面将介绍这三种语句:

表达式语句

表达式

  • 赋值表达式
  • ++或--表达式
  • 方法调用
  • 对象创建表达式
  • 等等...

一个表达式,在计算(执行)后的结果可以表示以下三种含义:

  • 一个变量
  • 一个值
  • 无(当且仅当表达式是一个对于返回值为void的函数的调用)

一个表达式的类型,指的就是它在计算后得到的结果的类型。关于表达式更多信息可参考Java语言特性规定。

表达式语句

以上四种表达式及其复合表达式,在加上分号(;)就成为了相应的表达式语句,如下所示:

// assignment statement
aValue = 8933.234;
// increment statement
aValue++;
// method invocation statement
System.out.println("Hello World!");
// object creation statement
Bicycle myBike = new Bicycle();

声明语句

  形如:

// declaration statement
double aValue = 8933.234;

控制流程语句

语句块

​ 语句块是由一对含有零条或者多条语句的大括号所组成,能够出现在任何一条单独语句能够出现的地方。

class BlockDemo {
     public static void main(String[] args) {
          boolean condition = true;
          if (condition) { // begin block 1
               System.out.println("Condition is true.");
          } // end block one
          else { // begin block 2
               System.out.println("Condition is false.");
          } // end block 2
     }
}

​ 在语句块中声明的变量,它的作用域仅限于该语句块。也就是说下面这样的代码是被允许的:

public static void main(String[] args) {
    {
        {
            int i=0;
        }
        {
            int i=0;
        }
    }

选择语句(decision-making statements )

if-then和if-then-else

if(boolean-exprenssion){
    statements;
}
//或者
if(boolean-exprenssion){
    statements;
}else{
    statements;
}

  下面的例子中出现了else if,但其并不是新的关键字,而仅仅是else后面紧跟一个新的if语句。

if(boolean-exprenssion){
    statements;
}else if(boolean-exprenssion){
    statements;
}else{
    
}

switch

​ 虽然同样是选择语句,但与if-then和if-then-else不同,switch可以有更多可能执行的路径,switch语句中的表达式类型可以是byte、short、char、int以及这四种对应的包装类型Byte、Short、Character、Integer。还可以是String类型和枚举类型。注意:当使用的是String类型的时候,表达式的值不能为null,否则会导致NullPointerException。

public class SwitchDemo {
    public static void main(String[] args) {
        int month = 8;
        String monthString;
        switch (month) {
            case 1:  monthString = "January";//这里的1就是一个case标签
                     break;
            case 2:  monthString = "February";
                     break;
            case 3:  monthString = "March";
                     break;
            case 4:  monthString = "April";
                     break;
            case 5:  monthString = "May";
                     break;
            case 6:  monthString = "June";
                     break;
            case 7:  monthString = "July";
                     break;
            case 8:  monthString = "August";
                     break;
            case 9:  monthString = "September";
                     break;
            case 10: monthString = "October";
                     break;
            case 11: monthString = "November";
                     break;
            case 12: monthString = "December";
                     break;
            default: monthString = "Invalid month";
                     break;//因为在最后了,所以实际上是没有必要加break的
        }
        System.out.println(monthString);
    }
}

​ switch语句的主体被称为switch块,在switch块中可以有一个或者多个case/default标签,switch语句首先计算表达式,然后与case标签进行匹配。break语句是为了结束switch语句,没有breakd执行完case后面的语句之后,将继续往下执行。直到遇见break或者执行完所有语句。case标签必须是常量表达式或者是枚举常量,case标签的类型对于switch表达式的类型而言,必须是可赋值的。更多可参考java语言特性规定。

循环语句

for

for (initialization; termination; increment) {
    statement(s)
}

while

while (expression) {
    statement(s)
}

do-while

do {
     statement(s)
} while (expression);

分支语句

关于标签:

    public static void main(String[] args) {
        label://后面必须紧跟循环语句
            for(;;) {
                for(;;)
                break label;
            }
    }

​ 如上面代码所示,标签就是后面根有冒号的标识符,并且标签与循环语句之间不允许插入任何其他语句,否则在使用break/continue标签的地方会编译出错。在Java里需要使用标签的理由就是想从多层循环嵌套中break或continue

break

  • 一般的break会中断并跳出当前层循环
  • 带标签的break会中断并且跳出标签所指的循环。

continue

  • 一般的continue会退回到当前层循环的开头,并继续执行。
  • 带标签的continue会到达标签所指的位置,并且继续执行紧跟在那个标签后面的循环。

return

​ return语句从当前的方法离开,回到方法被调用的地方,有两种形式,一种带返回值,一种不带返回值(声明方法返回值类型为void时)。

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
java 选择结构if
图11     if…elseif…else语句的流程图!(https://oscimg.oschina.net/oscnet/421d60a830835fe0a86905053cf0c13578d.png)选择结构if语句与三元运算转换  三元运算符,它和ifelse语句类似,语法如下:  判断条件?表达式1:表达式2
CuterCorley CuterCorley
4年前
C语言入门系列之3.顺序程序设计和输入输出
从程序流程的角度来看,程序可以分为三种基本结构,即顺序结构、分支结构、循环结构,这三种基本结构可以组成各种复杂程序,C语言提供了多种语句来实现这些程序结构。同时C语言提供的输入输出的函数为IO提供了方便的工具。一、C语句介绍1.C基本语句C程序的执行部分是由语句组成的,程序的功能也是由执行语句实现的。C语句可分为以下五类:表达式语句表达式语句:
Souleigh ✨ Souleigh ✨
4年前
【C 陷阱与缺陷】(二)语法陷阱
0.理解函数声明请思考下面语句的含义:((void()())0)()前面我们说过C语言的声明包含两个部分:类型和类似表达式的声明符。最简单的声明符就是单个变量:floatf,g;由于声明符和表达式的相似,我们可以在声明符中任意使用括号:float((f));这个声明的含义是:当对f求值时,(
Wesley13 Wesley13
3年前
Java自学
Java的If条件语句条件判断示例1:ifif(表达式1){表达式2;}如果表达式1的值是true,就执行表达式2!if(https://oscimg.oschina.net/oscnet/9bbaf72c54f9849129e8a039
Wesley13 Wesley13
3年前
MySQL的if,case语句使用总结
Mysql的if既可以作为表达式用,也可在存储过程中作为流程控制语句使用,如下是做为表达式使用:IF表达式IF(expr1,expr2,expr3)如果expr1是TRUE(expr1<0andexpr1<NULL),则IF()的返回值为expr2;否则返回值则为expr3。IF()的返回值为数字值或
Stella981 Stella981
3年前
JavaScript的语法
语句和表达式语句相当于句子,表达式相当于短语,运算符则相当于标点符号和连接词。语句的结果值代码块的结果值就如同一个隐式的返回,即返回最后一个语句的结果值。表达式的副作用最常见的有副作用(也可能没有)的表达式是函数调用:functionfoo(){aa1;}var
Wesley13 Wesley13
3年前
Java基础 : Java语句
Java基础:Java语句Java语句下载地址 http://wenku.it168.com/d\_000596432.shtml关键语句介绍一、while语句一般形式:while(条件表达式){语句体………}执行过程:条件表达式为真,执行语句
Wesley13 Wesley13
3年前
Java05
Java05Java基础语法(四)循环结构循环结构(重复/迭代):根据条件重复执行部分语句1、while循环结构while(条件表达式){     循环体语句;}1)语法:a、while是关键字        b、“条件表达式”必须用括号括起来        c、“{}”表示循环的控制范围,若没有“{}”,whil
Stella981 Stella981
3年前
Python—语法基础(8) 分支、循环结构
分支紧凑格式:<表达式1if<条件else<表达式2分支结构if<条件1:<语句块1elif<条件2:<语句块2……else:<语句块N异常处理try:
Wesley13 Wesley13
3年前
Java基础入门(三)之条件分支结构以及键盘录入
一、if语句1、if条件语句的表达式无论简单还是复杂,结果必须是布尔类型。2、if语句的三种形式第一种:if(比较表达式)                {语句体1:}如果if语句控制的语句体是一条,大括号可以省略,若为多条,必须加大括号。要求:统一加大括号第二种:if(比较表达式){语句体1
小万哥 小万哥
1年前
C 语言中的 switch 语句和 while 循环详解
C语言中的switch语句替代多重if..else语句,可以使用switch语句。switch语句用于选择多个代码块中的一个来执行cswitch(表达式)casex://代码块break;casey://代码块break;default://代码块工作原理