Java基础——流程控制

文章目录

  • 顺序结构
  • 分支结构
    • if
    • if else
    • switch
  • 循环结构
    • for
    • while
    • do while
    • 嵌套循环
  • 流程控制语句
    • break
    • continue
    • return

流程控制语句是用来控制程序中各语句执行顺序,可以把语句组合成能完成一定功能的小逻辑模块。

顺序结构

程序从上到下逐行执行,中间没有任何判断和跳转。

public class FlowControlDemo {
    public static void main(String[] args) {
    	//程序从上到下依次加载执行,最后输出结果
        int value = 3;
    	int lastValue = value + 3;
    	System.out.sprintln("最新值:"+lastVlaue);
    }
}

Java的成员变量采用合法的前向引用(即未提前定义加载的成员变量不能被引用)。

public class FlowControlDemo {
	//错误示范
    public int val = num + 5;
    public int num = 3;
}

分支结构

if

当 if 括号里的条件表达式满足时(即为true,反之false),会执行 if 代码块(即两个大括号包裹部分)里的语句,否则执行该 if 代码块外的语句。

语法:

if(条件表达式) {
 	//执行语句;       
}

示例:

int num = 3;
if (num > 5) {
    System.out.println("num数值大于5");
}
System.out.println("num数值小于5"); //输出:num数值小于5

if else

当 if 括号里的条件表达式满足时(即为true,反之false),执行 if 代码块(即两个大括号包裹部分)里的语句,否则执行 else 代码块内的语句。

语法:

if(条件表达式) {
    //执行语句1;
} else {
    //执行语句2;
}

示例:

int num = 3;
if (num > 5) {
    System.out.println("num数值大于5");
} else {
    System.out.println("num数值小于5"); //输出:num数值小于5
}

当第一个 if 括号里的条件表达式满足条件时(即为true,反之false),则执行该 if 代码块内(即两个大括号包裹部分)的语句,否则继续判断下一个 else if 括号里的条件表达式式( else if 可以有多个),直到判断满足条件的 if,并执行该 if 内的语句,否则执行最后一个 else 代码块内的语句。

语法:

if(条件表达式1) {
    //执行语句1;
} else if(条件表达式2) {
    //执行语句2;
} .... {
	//执行语句3
} else if(条件表达式4){
    //执行语句4;
} else {
	//执行语句5;
}

注意:省略号表示可以有多个else if,并非只能有一个,根据个人判断逻辑决定。

示例:

int num = 3;
if (num > 5) {
    System.out.println("num数值大于5");
} else if (num > 0){
    System.out.println("num数值大于0"); //输出:num数值大于0
} else {
    System.out.println("num数值小于0");
}

switch

语法:

switch(表达式) {
    case 常量1:
        //执行语句1;
        break;
    case 常量2:
        //执行语句2;
        break;
    .....
    default:
        //执行语句n;
        break;
}

注意:

  • 表达式可以是byte,short,char,int,枚举(jdk1.5),字符串(jdk1.7)。
  • case子句后的值必须是常量,不能是变量名或不确定的表达式值。
  • break语句用来执行完一个case分支后使程序跳出Switch语句块。
  • default子句是可选的,当所有case都不匹配时执行。

示例:

String level = "A";
switch (level) {
    case "A":
        System.out.println("优秀"); //输出:优秀
        break;
    case "B":
        System.out.println("良好");
        break;
    case "C":
        System.out.println("合格");
        break;
    default:
        System.out.println("不合格");
}

循环结构

for

语法:

for(初始化部分; 循环条件部分; 迭代部分) {
    //执行循环体
}

执行流程:
Java基础——流程控制_第1张图片
注意:

  • 当循环条件不满足时,直接结束循环。
  • 初始化部分可以声明多个变量,必须是同一类型,用逗号隔开。
  • 迭代部分可以有多个变量迭代,用逗号隔开。

示例:

int num = 10;
int count = 0;
for (int i = 0; i < num; i++) {
    System.out.println("当前遍历次数:"+(++count));
}

while

语法:

初始化部分;
while(循环条件部分) {
     //执行循环体
     //迭代部分
}

注意:迭代部分要避免死循环。

示例:

int num = 10;
int count = 0;
while (num > 0) { //循环判断
    System.out.println("当前遍历次数:"+(++count)); //执行语句
    num--; //变量迭代
}

do while

语法:

初始化部分;
do{
     //循环体部分
     //迭代部分
}while(循环条件部分);

注意:do while循环必执行一次。

示例:

int num = 10;
int count = 0;
do {
    System.out.println("当前遍历次数:"+(++count));
    num--;
} while (num > 0);

嵌套循环

嵌套循环就是循环体内有循环,外层循环体内的循环称为内循环,当只有内层循环的循环条件为false时,才会完全跳出内层循环,执行内循环外的语句,执行完才可结束外层的当次循环,开始下一次循环。

流程图:(for循环嵌套为例,其他循环同理)
Java基础——流程控制_第2张图片
注意:一般嵌套循环不超过3层,避免禁止无限套娃,避免死循环以及问题定位复杂。

当多层循环中,跳出指定的某层循环,可以使用带标签的break或continue跳出。

outer:for (int i = 0; i < 10; i++) { //外循环标签outer
    System.out.println("外循环输出:"+i);
    inner:for (int j = 0; j < 3; j++) { //内循环标签inner
        System.out.println("内循环输出:"+j);
        if (j == 2) {
            System.out.println("外循环结束");
            break outer; //跳出外循环
        }
    }
}

示例:

/**
 * 获取100以内的质数
 * 扩展:质数是除了1和本身,不能被其他数整除的数
 */
public static void main(String[] args) {
    //是否质数标识
    boolean isFlag = true;
    //0和1既不是质数也不是合数,所以从自然数2开始
    for (int i = 2; i < 100; i++) {
        //为什么是j<=Math.sqrt(i),一个数的平均跟
        // 例如:10 = 2 * 5; 每一个数都会有对应的一个自然数与之匹配(2和5匹配),我们只需要取它匹配的一半(自然数2)就可,需要在取5去判断一次
        for (int j = 2; j <= Math.sqrt(i); j++) {
            if (i % j == 0) {
                isFlag = false;
                //被其他数整除就说明该数不是质数,直接break不需要再执行
                break;
            }
        }
        if (isFlag) {
            //输出质数
            System.out.println(i);
        }
        isFlag = true;
    }
}

流程控制语句

break

终止某个语句块的执行。

在嵌套循环中,通过标签指明要终止的是哪一层循环。

注意:该终止语句只能用于Switch语句和循环语句中。

示例:

int num = 3;
while (num > 0) {
    if(num == 1) {
    	break; //当num等于1时,终止while循环
    }
    num--;
}

continue

只能使用在循环结构中,用于跳过当前循环,执行下一次循环。

在嵌套循环中,通过标签指明要跳过哪一层循环。

示例:

int num = 3;
while (num > 0) {	
    if(num == 1) {
    	continue; //当num等于1时,跳过执行后面的语句,直接开始下一次循环
    }
    System.out.println("循环输出:"+num);
    num--;
}

return

结束整个方法,不管return处于多少层循环之内。

示例:

public void test() {
	for (int i = 0; i < 10; i++) {
        for (int j = 0; j < 3; j++) {
        	if(j == 2) {
        		return; //结束整个test方法
			}
        }
    }
}

你可能感兴趣的:(Java基础,java,算法)