目录
一、顺序结构
二、选择结构
1. if -else结构:
2. switch-case结构:
三、循环结构
1. while循环
2. do-while循环
3. for循环
4. 增强的for循环
四、跳转语句
1. break 语句:
2. continue 语句:
3. return 语句:
流程控制是指在程序运行时,控制各个语句或代码块执行顺序的机制。通过流程控制,程序可以根据不同的条件执行不同的代码路径,从而实现复杂的逻辑和功能。Java中的流程控制主要分为三种基本结构:顺序结构、选择结构和循环结构。
顺序结构是最基本的流程控制方式,程序按照语句出现的先后顺序依次执行。
public class Demo {
public static void main(String[] args) {
System.out.println("语句1");
System.out.println("语句2");
System.out.println("语句3");
}
}
在本例中,程序会按照从上到下的顺序依次输出“语句1”、“语句2”和“语句3”。
选择结构也称为分支结构,用于根据特定条件执行不同的代码块。Java 中主要有if-else
语句、switch-case
语句等。
单分支结构:只有if
语句,如果条件为真,则执行if
块中的代码。
双分支结构:包含if
和else
语句,如果条件为真,则执行if
块中的代码;否则执行else
块中的代码。
多分支结构:使用多个else if
语句,根据不同的条件执行不同的代码块。
public class Demo {
public static void main(String[] args) {
int number = 10;
if (number > 0) {
System.out.println("正数"); //输出:正数
} else if (number < 0) {
System.out.println("负数");
} else {
System.out.println("零");
}
}
}
注意:
if
语句后的括号内必须包含一个布尔表达式,该表达式的结果必须为true
或false
。
如果存在else
语句,它必须紧跟在所有else if
语句之后,最多只能有一个else语句。
可以有多个else if
语句,但它们必须在else
语句之前。
一旦某个else if
条件为真,后续的else if
和else
语句将被跳过。
用于处理多分支情况,根据表达式的值选择执行不同的代码块。
public class Demo {
public static void main(String[] args) {
int day = 3;
switch (day) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三"); //输出:星期三
break;
default:
System.out.println("其他");
}
}
}
注意:
switch语句中的表达式数据类型必须是以下几种之一:byte、short、int、char、String(JDK7以后)或enum(JDK5以后)。
case标签后面的值必须是常量,不能是变量,多个case标签后面的值不能重复,否则会导致编译错误。
break语句用于在执行完一个case后跳出switch语句,如果没有使用break语句,程序将继续执行后续的case语句,直到遇到break语句或switch块结束,这种现象称为“fall-through”。
default标签是可选的,但建议包含,以处理所有未匹配的case情况,default标签可以放在switch语句的任意位置,但通常放在最后。
循环结构用于重复执行一段代码,直到不再满足特定条件为止。Java提供了多种循环结构,包括while
循环、do-while
循环和for
循环。
在条件为真时重复执行循环体(一般用于不知道具体要循环多少次的情况)。
public class Demo {
public static void main(String[] args) {
int i = 0;
while (i < 5) {
System.out.print(i); // 输出:01234
i++;
}
}
}
至少执行一次循环体后判断条件。
public class Demo {
public static void main(String[] args) {
int i = 0;
do {
i++; // i=1
System.out.println(i); // 输出:1
} while (i > 1); // i>1不成立
}
}
功能强大,使用最广泛,包含初始化、终止和迭代三个部分(一般用于知道具体要循环多少次的情况)。
public class Demo {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.print(i); //输出:01234
}
}
}
在本例中,i = 0是初始化,i < 5是终止条件,i++是迭代过程。
增强的for循环(也称为"for-each循环")是Java 5及更高版本中引入的一种简化数组和集合遍历的语法。它使得遍历数组或集合中的元素变得更加简洁和直观,而不需要使用索引或迭代器,特别适用于遍历数组或实现了Iterable接口的对象(如List、Set等集合)。
(1)语法结构:
for (元素类型 变量名 : 数组或集合) {
// 循环体内的代码,对变量名所代表的当前元素进行操作
}
元素类型:指定集合或数组中元素的数据类型。
变量名:在每次迭代中代表当前元素的变量名。
数组或集合:要遍历的数组或实现了Iterable接口的集合对象。
(2)示例:
遍历数组
public class Demo {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5};
for (int number : numbers) {
System.out.print(number); //输出:12345
}
}
}
遍历集合
import java.util.Arrays;
import java.util.List;
public class Demo {
public static void main(String[] args) {
List names = Arrays.asList("A", "B", "C");
for (String name : names) {
System.out.print(name); //输出:ABC
}
}
}
遍历二维数组
虽然增强的for循环不能直接遍历二维数组,但可以通过嵌套的增强for循环实现:
public class Demo {
public static void main(String[] args) {
int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
for (int[] row : matrix) {
for (int num : row) {
System.out.print(num); //输出:123456789
}
}
}
}
Java中的跳转语句是控制程序流程的关键工具,允许程序跳过特定的语句或循环。Java主要支持三种跳转语句:break
、continue
和 return
。
break
语句被用于提前退出循环或switch
语句。当程序执行到break
时,它会立即终止所在的最内层循环或switch
语句,并跳转到该循环或语句之后的代码继续执行。
public class Demo {
public static void main(String[] args) {
for (int i = 1; i < 10; i++) {
if (i == 5) {
break; // 当i等于5时,跳出循环
}
System.out.print(i); // 输出:1234
}
}
}
continue
语句用于跳过当前循环的剩余部分,并直接进入下一次循环迭代。与break
不同,continue
不会终止整个循环,而只是跳过当前迭代中的剩余代码。
public class Demo {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) {
continue; // 跳过偶数
}
System.out.print(i); // 输出:13579
}
}
}
return
语句用于从方法中返回值并立即退出该方法。在void
类型的方法中,return
语句可以单独使用,表示方法的结束。对于非void
类型的方法,return
语句必须带有一个与方法返回类型相匹配的表达式。
public class Demo {
public static void main(String[] args) {
int sum = add(1, 2); //用sum接收add的return值
System.out.println(sum); // 输出:3
}
public static int add(int a, int b) {
return a + b; // 返回两个整数的和
}
}