当前位置: 首页 > news >正文

Java基础4-控制流程

控制流程

Java使用条件语句和循环结构确定控制流程。基本和C++一样,但是没有goto语句,但break语句可以有标签,用于跳出内层循环。

块作用域(block)

(即复合语句)是指由一堆花括号括起来的若干条简单的Java语句,

  • 块确定了变量的作用域
  • 块能互相嵌套,但是内层声明的变量名不能和外层同名(注意作用域!)。

条件语句

if(condition) statement;if(condition){statement1;statement2;
}
else{//可选statement3
}
else if{//可选statement4
}

当然条件判断不止条件语句一种实现,还有一些类封装了含条件语句的方法,比如用于判断值为空的Optional类,就提供了这么一个方法orElseThrow。使得代码更为简洁易读。image-20241023144030725

循环

while循环

while循环首先检测循环条件,因此循环体中的代码有可能不执行;do while 语句会至少执行一次。和for循环相比,while循环不指定循环次数,在不知道循环次数时比较好用。

while(condition)statement;while(condition){statement1;statement2;
}do statement while(condition);do {statement1;statement2
}while(condition)

for循环

支持迭代的一种通用结构,可以被视作while循环的一种简化形式,都能用while来重写。一共三部分:

  • 初始化计数器
  • 检测条件
  • 更新计划
for(int i=1;i<=10;i++)System.out.println(i);
增强for循环

switch语句

case标签必须是整数或枚举常量,不能测试字符串,比如case "A"就会触发报错。使用枚举时不用指明枚举名字,举例来说不用case Size.SMALL,直接用case SMALL就可以

switch(n){case 1:{statement1;break;//这个不能忘,要主动退出!否则可能触发多个分支}case 2:{statement2;break;}//………………
}

break语句

中断控制流程语句。

break可以用于退出循环语句。

但有时在嵌套很深的循环语句中会发生不可预料的事情,此时可能更希望跳到嵌套的所有循环语句之外,通过修改各层循环的检测条件来实现很不方便,因此选择使用标签的方法,标签后必须紧跟一个冒号,并且标签必须放在希望跳出的最外层循环之前。

public class LabeledBreakExample {  public static void main(String[] args) {  outerLoop: // 标签 outerLoop  for (int i = 0; i < 5; i++) {  System.out.println("Outer loop i: " + i);  for (int j = 0; j < 5; j++) {  System.out.println("  Inner loop j: " + j);  // 当 j 等于 2 时,跳出 outerLoop 标签指向的外层循环  if (j == 2) {  break outerLoop; // 使用带标签的 break  }  }  }  System.out.println("Exited the outer loop.");  }  
}

continue语句

也是用于中断正常控制流程的语句,使用continue语句会越过当前循环体的剩余部分,跳到循环首部去

还有一种带标签的continue语句,将跳到与标签匹配的循环首部

`

continue语句

也是用于中断正常控制流程的语句,使用continue语句会越过当前循环体的剩余部分,跳到循环首部去

还有一种带标签的continue语句,将跳到与标签匹配的循环首部

http://www.lryc.cn/news/474573.html

相关文章:

  • 面试题分享11月1日
  • 【含文档】基于ssm+jsp的学科竞赛系统(含源码+数据库+lw)
  • Docker方式部署ClickHouse
  • 车载通信架构 --- PNC、UB与信号的关系
  • 智慧农业云平台:大数据赋能现代农业的未来
  • 【python】OpenCV—Tracking(10.4)—Centroid
  • 为什么TCP(TIME_WAIT)2倍MSL
  • jieba-fenci 05 结巴分词之简单聊一聊
  • Hadoop期末复习(完整版)
  • Python篮球王子
  • 分享一些在部署k8s集群时遇到的问题
  • 【Canal 中间件】Canal使用原理与基本组件概述
  • 《Baichuan-Omni》论文精读:第1个7B全模态模型 | 能够同时处理文本、图像、视频和音频输入
  • YOLOv6-4.0部分代码阅读笔记-common.py
  • 移植 AWTK 到 纯血鸿蒙 (HarmonyOS NEXT) 系统 (4) - 平台适配
  • Java 多线程(八)—— 锁策略,synchronized 的优化,JVM 与编译器的锁优化,ReentrantLock,CAS
  • 【项目分享】法拉利中控台模拟 html+css+js
  • Rust 力扣 - 2461. 长度为 K 子数组中的最大和
  • stm32103c8t6 pwm驱动舵机(SG90)
  • Python For循环
  • C++入门——“C++11-右值引用和移动语义”
  • timm使用笔记
  • android浏览器源码 可输入地址或关键词搜索 android studio 2024 可开发可改地址
  • 贪心算法入门(一)
  • C# ref和out 有什么区别,分别用在那种场景
  • TikTok直播专线:提升直播效果和体验
  • 由浅入深逐步理解spring boot中如何实现websocket
  • 1-petalinux 问题记录-根文件系统分区问题
  • 微信小程序的上拉刷新与下拉刷新
  • 【大语言模型】ACL2024论文-05 GenTranslate: 大型语言模型是生成性多语种语音和机器翻译器