java基础---Java程序流程控制

1.什么是程序流程控制?

控制程序的执行顺序

2.程序有哪些执行顺序?

顺序结构:自上而下的执行代码
分支结构:根据条件,选择对应代码执行 。例如:if ,switch
循环结构:控制某段代码重复执行 。例如:for, while, do - while

3. 分支结构

if分支:

  • if 分支:根据条件(真或假)来决定执行某段代码
  • if 分支的三种形式:单分支结构,双分支结构,多分支结构。
单分支结构的语法格式:
if (条件表达式) {
    语句体;
}
执行流程:条件为真进入执行代码,条件为假不进入不执行代码。
双分支结构的语法格式:
if (条件表达式) {
    语句体 1;
} else {
    语句体 2;
}
执行流程:条件为真进入 if 执行代码语句体 1,条件为假进入 else 执行代码语句体 2
多分支结构的语法格式:
if (条件表达式 1) {
    语句体 1;
} else if (条件表达式 2)
{
    语句体 2;
} else if (条件表达式 3)
{
    语句体 3;
}. . . 
else {
    语句体 n;
}
执行流程:条件为真进入if 执行代码语句体 1,条件为假进入 else if 并且判断条件是否为真,为真执行代码 语句体2,条件为假进 入 else 执行代码。
注意:前面都为假就执行 else 中的代码

Switch 分支:

是通过比较值来决定执行哪条分支
switch(表达式){
    case 值 1:
        执行代码...;
        break;
    case 值 2:
        执行代码...;
        break; …
    case 值 n-1:
        执行代码...;
        break;
    default:
    执行代码 n;
}
注意:与所有的case值都不匹配时执行default 语句
//JDK14进行的switch增强,解决了switch的穿透情况(忘写break的情况)
             switch(条件表达式){
                 case 值1,值5 ->  //表达式的结果是值1,值5的时候执行的代码 ;
                 case 值2 ->  //表达式的结果是值2的时候执行的代码 ;
                 case 值3 ->  //表达式的结果是值3的时候执行的代码 ;
                 case 值4 ->  //表达式的结果是值4的时候执行的代码 ;
                 default -> //除了上边所有值的情况之外,执行的代码;
              }
分支的执行流程:
  • 先执行表达式的值,再拿着这个值去与 case 后的值进行匹配。
  • 与哪个 case 后的值匹配为 true 就执行哪个 case 块的代码,遇到 break 就跳出 switch 分支。
  • 如果全部 case 后的值与之匹配都是 false,则执行 default 块的代码。

使用 switch 分支的几点注意事项:
  • 表达式类型只能是 byte、short、int、char,JDK5 开始支持枚举,JDK7 开始支持 String、不支持 double、float、long
  • case 给出的值不允许重复,且只能是字面量不能是变量
  • 正常使用 switch 的时候,不要忘记写 break,否则会出现穿透现象
  • 当存在多个 case 分支的代码相同时,可以把相同的代码放到一个 case 块中,其他的 case 块都通过穿透性穿透到该 case 块执行代码即可,这样可以简化代码

if、switch 的比较,以及各自适合什么业务场景?
  • if 在功能上远远强大于 switch
  • 当前条件是区间的时候,应该使用 if 分支结构
  • 当条件是与一个一个的值比较的时候,switch 分支更合适:格式良好,性能较好,代码优雅

4. 循环结构

for循环
for 循环:控制一段代码反复执行很多次。
for 循环语法格式:
for (初始化语句; 循环条件; 迭代语句) {
    循环体语句(重复执行的代码);
}

//例如:
// 输出 3 次 Hello World
for (int i = 0; i < 3; i++) {
    System.out.println("Hello World");
}

执行流程:初始化语句--->循环条件是否为真,真进入循环,假不进入循环--->循环体语句(重复执行的代码--->迭代语句

--->循环条件是否为真,真进入循环,假不进入循环--->循环体语句(重复执行的代码--->迭代语句...

以此类推,当循环条件假时会结束循环

while 循环
初始化语句;
while (循环条件) {
    循环体语句(被重复执行的代码);
    迭代语句;
}

//例如:
int i = 0;
while (i < 3) {
    System.out.println("Hello World");
    i++;
}

执行流程:初始化语句--->循环条件是否为真,真进入循环,假不进入循环--->循环体语句(重复执行的代码--->迭代语句

--->循环条件是否为真,真进入循环,假不进入循环--->循环体语句(重复执行的代码--->迭代语句...

以此类推,当循环条件假时会结束循环

do-while 循环
初始化语句;
do {
    循环体语句;
    迭代语句;
} while (循环条件);

//例如:
int i = 0;
do {
    System.out.println(“Hello World!");
    i++;
} while( i < 3);
do-while 循环的特点:先执行后判断
执行流程:初始化语句--->循环体语句(重复执行的代码--->迭代语句--->循环条件是否为真,真进入循环,假不进入循环
--->循环体语句(重复执行的代码--->迭代语句--->循环条件是否为真,真进入循环,假不进入循环
以此类推,当循环条件假时会结束循环
三种循环的区别小结
  • for 循环 和 while 循环(先判断后执行); do...while (先执行后判断)
  • for 循环和 while 循环的执行流程是一模一样的,功能上无区别,for 能做的 while 也能做,反之亦然。
  • 使用规范:如果已知循环次数建议使用 for 循环,如果不清楚要循环多少次建议使用while 循环。
  • 其他区别:for 循环中,控制循环的变量只在循环中使用。while 循环中,控制循环的变量在循环后还可以继续使用

5.死循环

死循环的写法:

for ( ; ; ) {
    System.out.println("Hello World1");
}



// 经典写法
while (true) {
    System.out.println("Hello World2");
}




do {
    System.out.println("Hello World3");
} while (true)

6.循环嵌套

循环中又包含循环

for(int i = 0; i < 3; i++) {
    for(int j = 0; j < 5; j++) {
        System.out.println("老鼠爱大米");
    }
}
循环嵌套的特点:外部循环每循环一次,内部循环会全部执行完一轮。

7. 跳转关键字:break、continue

break :
  • 跳出并结束当前所在循环的执行。
continue:
  • 用于跳出当前循环的当次执行,直接进入循环的下一次执行。
注意事项:
  • break : 跳出并结束所在循环, 或者结束所在 switch 分支的执行。
  • continue : 跳出当前循环,直接进入循环的下一次执行。

8.产生随机数的Random类

可以使用里面的方法:nextInt()产生一个范围内的随机数
产生0-n之间的随机数的方法:
  • 产生[0,n)随机数:  nextInt( n )  (包头不包尾)
  • 产生[0,n]随机数:nextInt(n + 1)(包头包尾)
产生n-m之间的随机数的方法:
  • 产生[m,n)随机数:nextInt(n - m ) + m  (包头不包尾)
  • 产生[m,n]随机数:nextInt(n - m + 1) + m(包头包尾)
  • 21
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值