Java控制语句

简介: 程序设计中的控制语句有三种,即顺序、分支和循环语句。Java程序通过控制语句来管理程序流,完 成一定的任务。程序流是由若干个语句组成的,语句可以是一条单一的语句,也可以是一个用大括号 ({})括起来的复合语句。

Java中的控制语句有以下几类:


分支语句:if和switch

循环语句:while、do-while和for

跳转语句:break、continue、return和throw


一、分支语句


if 语句

由if语句引导的选择结构有if结构、if-else结构和else-if结构三种。

(1)if结构:

if (条件表达式) { 
  语句组 
}

(2)if-else结构

if (条件表达式) { 
  语句组1 
} else {
  语句组2 
}

3)else-if结构

if (条件表达式1) { 
  语句组1 
} else if (条件表达式2) {
  语句组2 
} else if (条件表达式3) {
  语句组3 
...
} else if (条件表达式n) {
  语句组n 
} else {
  语句组n+1 
}

可以看出,else-if结构实际上是if-else结构的多层嵌套,它明显的特点就是在多个分支中只执行 一个语句组,而其他分支都不执行,所以这种结构可以用于有多种判断结果的分支中。


switch结构

switch提供多分支程序结构语句。下面先介绍一下switch语句基本形式的语法结构,如下所示:

switch (表达式) {
  case 值1: 
    语句组1 
  case 值2: 
    语句组2 
  case 值3: 
    语句组3 
  ... 
  case 判断值n: 
    语句组n 
  default: 
    语句组n+1
}

switch语句中“表达式”计算结果只能是int、byte、short和char类型,不能是long更不能其他的类型。每 个case后面只能跟一个int、byte、short和char类型的常量,default语句可以省略。


二、循环语句


循环语句能够使程序代码重复执行。Java支持三种循环构造类型:while、do-while、和for。


while语句

while语句是一种先判断的循环结构

while (循环条件) { 
  语句组 
}

while循环没有初始化语句,循环次数是不可知的,只要循环条件满足,循环就会一直进行下去。


do-while语句

do-while语句的使用与while语句相似,不过do-while语句是事后判断循环条件结构,语句格式如下:

do {
  语句组 
} while (循环条件)

do-while循环没有初始化语句,循环次数是不可知的,不管循环条件是否满足,都会先执行一次循环 体,然后再判断循环条件。如果条件满足则执行循环体,不满足则停止循环。


for语句

for语句是应用最广泛、功能最强的一种循环语句。一般格式如下:

for (初始化; 循环条件; 迭代) { 
  语句组 
}

for语句执行流程如图

7.png

首先会先执行初始化语句,它的作用是初始化循环变量和其他变量,然 后程序会判断循环条件是否满足,如果满足,则继续执行循环体并计算迭代语句,之后再判断循环条 件,如此反复,直到判断循环条件不满足时跳出循环。


for-each语句

使用for-each循环不必按照for的标 准套路编写代码,只需要提供一个集合就可以遍历。

假设有一个数组,采用for语句遍历数组的方式如下:

// 声明并初始化int数组
int[] numbers = { 43, 32, 53, 54, 75, 7, 10 };
System.out.println("----for-------"); 
// for语句 
for (int i = 0; i < numbers.length; i++) { 
  System.out.println("Count is:" + numbers[i]); 
}

用for-each循环语句遍历数组的方式如下:

// 声明并初始化int数组
int[] numbers = { 43, 32, 53, 54, 75, 7, 10 };
System.out.println("----for each----"); 
// for-each语句 
for (int item : numbers) { 
  System.out.println("Count is:" + item); 
}

从示例中可以发现,item不是循环变量,它保存了集合中的元素,for-each语句将集合中的元素一一取 出来,并保存到item中,这个过程中不需要使用循环变量,通过数组下标访问数组中的元素。可见foreach语句在遍历集合的时候要简单方便得多。


三、跳转语句


跳转语句能够改变程序的执行顺序,可以实现程序的跳转。Java有4种跳转语句:break、continue、 throw和return。


break语句

break语句可用于while、repeat-while和for循环结构,它的作用是强行退出循环体,不再 执行循环体中剩余的语句。

在循环体中使用break语句有两种方式:带有标签和不带标签。语法格式如下:

//不带标签
break; 
//带标签,label是标签名
break label;

不带标签的break语句使程序跳出所在层的循环体,而带标签的break语句使程序跳出标签指示的循环 体。

看一个示例,代码如下:

int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
for (int i = 0; i < numbers.length; i++) { 
  //跳出循环 
  if (i == 3) { 
    break; 
  } 
  System.out.println("Count is: " + i); 
}

运行结果:

Count is: 0 
Count is: 1 
Count is: 2

在上述程序代码中,当条件i==3的时候执行break语句,break语句会终止循环

break还可以配合标签使用,示例代码如下:

label1: for (int x = 0; x < 5; x++) {
  for (int y = 5; y > 0; y--) {
    if (y == x) { 
      //跳转到label1指向的循环 
      break label1; 
    } 
    System.out.printf("(x,y) = (%d,%d)", x, y); 
    // 打印一个换行符,实现换行 
    System.out.println();
  }
} 
System.out.println("Game Over!");

后面指定了label1标签,这样当条件满足执行break语句时,程序就会跳转出label1标签所指定的循环。 程序运行结果如下:

(x,y) = (0,5) 
(x,y) = (0,4) 
(x,y) = (0,3) 
(x,y) = (0,2) 
(x,y) = (0,1) 
(x,y) = (1,5) 
(x,y) = (1,4) 
(x,y) = (1,3) 
(x,y) = (1,2) 
Game Over!

如果break后面没有指定外循环标签,则运行结果如下:

(x,y) = (0,5) 
(x,y) = (0,4) 
(x,y) = (0,3) 
(x,y) = (0,2) 
(x,y) = (0,1) 
(x,y) = (1,5) 
(x,y) = (1,4) 
(x,y) = (1,3) 
(x,y) = (1,2) 
(x,y) = (2,5) 
(x,y) = (2,4) 
(x,y) = (2,3) 
(x,y) = (3,5) 
(x,y) = (3,4) 
(x,y) = (4,5) 
Game Over!

比较两种运行结果,就会发现给break添加标签的意义,添加标签对于多层嵌套循环是很有必要的,适 当使用可以提高程序的执行效率。


continue语句

continue语句用来结束本次循环,跳过循环体中尚未执行的语句,接着进行终止条件的判断,以决定是 否继续循环。对于for语句,在进行终止条件的判断前,还要先执行迭代语句。


在循环体中使用continue语句有两种方式可以带有标签,也可以不带标签。语法格式如下:

continue //不带标签
continue label //带标签,label是标签名

看一个示例,代码如下:

int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
for (int i = 0; i < numbers.length; i++) { 
  if (i == 3) { 
    continue; 
  }
  System.out.println("Count is: " + i); 
}

在上述程序代码中,当条件i==3的时候执行continue语句,continue语句会终止本次循环,循环体中 continue之后的语句将不再执行,接着进行下次循环,所以输出结果中没有3。

运行结果:

Count is: 0 
Count is: 1 
Count is: 2 
Count is: 4 
Count is: 5 
Count is: 6 
Count is: 7 
Count is: 8 
Count is: 9


带标签的continue语句示例代码如下:

label1: for (int x = 0; x < 5; x++) {
  for (int y = 5; y > 0; y--) {
    if (y == x) { 
      //跳转到label1指向的循环 
      continue label1; 
    } 
    System.out.printf("(x,y) = (%d,%d)", x, y); 
    // 打印一个换行符,实现换行 
    System.out.println();
  }
} 
System.out.println("Game Over!");

程序运行结果如下:

(x,y) = (0,5) 
(x,y) = (0,4) 
(x,y) = (0,3) 
(x,y) = (0,2) 
(x,y) = (0,1) 
(x,y) = (1,5) 
(x,y) = (1,4) 
(x,y) = (1,3) 
(x,y) = (1,2) 
(x,y) = (2,5) 
(x,y) = (2,4) 
(x,y) = (2,3) 
(x,y) = (3,5) 
(x,y) = (3,4) 
(x,y) = (4,5) 
Game Over!

由于跳过了x == y,因此下面的内容没有输出。

(x,y) = (1,1) 
(x,y) = (2,2) 
(x,y) = (3,3) 
(x,y) = (4,4)


相关文章
|
5月前
|
Java
JAVA跳转控制语句
JAVA跳转控制语句
64 1
|
算法 Java 程序员
Java控制语句
Java控制语句
39 0
|
4月前
|
Java
杨老师课堂_Java教程第三篇之控制语句
杨老师课堂_Java教程第三篇之控制语句
24 1
|
4月前
|
存储 Java
Java基础手册(标识符 关键字 字面值 变量 数据类型 字符编码 运算符 控制语句 方法及方法重载和递归 面向对象与面向过程)
Java基础手册(标识符 关键字 字面值 变量 数据类型 字符编码 运算符 控制语句 方法及方法重载和递归 面向对象与面向过程)
33 0
|
5月前
|
Java
Java的程序基本控制语句
Java的程序基本控制语句
|
5月前
|
Java
【JAVA基础篇教学】第三篇:Java循环控制语句
【JAVA基础篇教学】第三篇:Java循环控制语句
|
5月前
|
Java
Java开发手册之控制语句,2024最新Java笔经
Java开发手册之控制语句,2024最新Java笔经
|
5月前
|
小程序 Java 容器
03|Java基础语法:讲解标识符、关键字、变量、数据类型、运算符、控制语句(条件分支、循环)
03|Java基础语法:讲解标识符、关键字、变量、数据类型、运算符、控制语句(条件分支、循环)
29 0
|
5月前
|
Java
深入浅出Java基础语法:标识符、关键字、变量、数据类型、运算符与控制语句
深入浅出Java基础语法:标识符、关键字、变量、数据类型、运算符与控制语句
27 0
|
11月前
|
Java
Java练习题:控制语句_打印日历
Java练习题:控制语句_打印日历
47 1