Java的控制流语句详解

Java的控制流语句详解


文章目录

  • Java的控制流语句详解
  • 前言
  • 一、顺序结构
  • 二、选择结构
    • 1. if语句:用于判断一个条件是否为真,如果为真则执行相应的代码块。
    • 2. if...else if...else语句:用于在条件为真时执行一段代码,否则执行另一段代码。
    • 3. switch语句:用于根据表达式的值选择执行不同的代码块。
  • 三、循环结构
    • 1. for循环:用于在指定次数内重复执行代码块。
    • 2.while循环:当满足某个条件时,重复执行代码块。
    • 3.do...while循环:至少执行一次代码块,然后检查条件,如果条件为真,则继续执行。
    • 4. 常用的两个循环解析(区别和使用场景):
  • 四、跳转语句
    • 1. break语句:用于跳出循环或switch语句。
    • 2. continue语句:用于跳过当前循环的剩余部分,进入下一次循环。
    • 3. return语句:用于从方法中返回一个值,并结束方法的执行。
    • 4. 注意


前言

控制流语句决定了代码的执行顺序和逻辑,是程序能够按照我们的意图运行的关键。本文将详细解析Java中的控制流语句,帮助读者更好地理解和应用这些语句。

主要内容包括:顺序结构选择结构循环结构跳转语句


一、顺序结构

顺序结构是程序中最简单、最基本的流程控制。在Java中,顺序结构就是按照代码的先后顺序,依次执行每一条语句。这是程序执行的基本规则,也是我们编写代码时默认的执行方式。没有特定的语法结构,只需要按照代码的书写顺序进行即可。

二、选择结构

选择结构也被称为分支结构,它根据条件的真假来执行不同的代码块。Java中的选择结构主要通过if语句、if…else if…else语句和switch语句来实现。

1. if语句:用于判断一个条件是否为真,如果为真则执行相应的代码块。

语法示例:

//condition为真时,执行代码块
if (condition) {  // 执行代码块  
}

2. if…else if…else语句:用于在条件为真时执行一段代码,否则执行另一段代码。

语法示例:

// 条件为真时执行对应的代码块  
if (condition1) {  // 执行代码块1  
} else if (condition2) {  // 执行代码块2  
} else if (condition3) {  // 执行代码块3  
} else {  // 执行代码块4(如果所有条件都不满足)  
}// else if 可以去掉直接使用if...else...
if (condition) {  // 条件为真时执行的代码块  
} else {  // 条件为假时执行的代码块  
}

代码示例:

import java.util.Scanner;  public class AgeExample {  public static void main(String[] args) {  Scanner scanner = new Scanner(System.in);  System.out.print("请输入您的年龄:");  int age = scanner.nextInt();  if (age < 0) {  System.out.println("年龄不能是负数,请重新输入。");  } else if (age < 18) {  System.out.println("您还未成年。");  } else if (age >= 18 && age < 65) {  System.out.println("您是成年人。");  } else {  System.out.println("您已步入老年。");  }  scanner.close();  }  
}

在这个例子中,程序首先提示用户输入年龄,然后根据输入的年龄值来判断并输出相应的消息。如果年龄小于0,程序会输出一个错误消息;如果年龄在0到18岁之间,程序会输出未成年消息;如果年龄在18岁到65岁之间,程序会输出成年消息;如果年龄大于或等于65岁,程序会输出老年消息。

注意,else if 和 else 块是可选的,你可以根据实际需要添加任意数量的 else if 块,或者只使用 if 和 else 块。此外,else 块也是可选的,如果你不想处理所有条件都不满足的情况,可以省略它。

3. switch语句:用于根据表达式的值选择执行不同的代码块。

switch 语句在 Java 中用于基于不同的情况执行不同的代码块。它根据表达式的值匹配 case 标签,并执行与该标签关联的代码。如果没有 case 与表达式的值匹配,且存在 default 标签,则会执行 default 下的代码。

语法示例:

switch (variable) {  case value1:  // 执行代码块1  break;  case value2:  // 执行代码块2  break;  default:  // 默认执行的代码块  
}

代码示例:

public class SwitchStatementExample {  public static void main(String[] args) {  // 定义一个变量  int day = 3;  // 使用 switch 语句根据 day 的值执行不同的代码块  switch (day) {  case 1:  System.out.println("今天是星期一");  break;  case 2:  System.out.println("今天是星期二");  break;  case 3:  System.out.println("今天是星期三");  break;  case 4:  System.out.println("今天是星期四");  break;  case 5:  System.out.println("今天是星期五");  break;  case 6:  System.out.println("今天是星期六");  break;  case 7:  case 8:System.out.println("今天是星期天");break;  default:  System.out.println("无效的日期");  }  }  
}

在上面的示例中,我们定义了一个名为 day 的变量,并将其值设置为3(代表星期三)。然后,我们使用 switch 语句根据 day 的值来输出不同的消息。每个 case 标签对应一个可能的 day 值,并且与每个 case 标签关联的代码块在匹配时会被执行。break 语句用于确保程序在执行完一个 case 代码块后跳出 switch 语句,而不是继续执行下一个 case 代码块(这被称为“贯穿”,在没有 break 时会发生)。如果 day 的值不是1到7之间的任何一个数字,default 标签下的代码将被执行。

且为了演示特殊情况,这边多列了一个数字8,7跟8之间因为没有break,所以输入7和输入8,程序的结果是一样的,都是输出"今天是星期天",所以需要注意:switch一般是需要跟break进行搭配使用的


三、循环结构

循环结构用于重复执行一段代码,直到满足特定的条件为止。Java中的循环结构主要有for循环while循环do…while循环,循环结构一定要有一个满足中断循环的条件,否则会成为死循环导致程序。

1. for循环:用于在指定次数内重复执行代码块。

只有当满足某个条件时才会执行代码块。

语法示例:指定次数->count

// int i = 0 相当于定义一个为i的局部变量,只在这个for循环中生效
// i<count 就是一个判断语句,只要i小于count就会一直执行代码块
// i++ 是每执行一次遍历,i就加1,只有这样子循环才会终结,否则就是一个死循环
for (int i = 0; i < count; i++) {  // 执行代码块  
}

代码示例:

public class ForLoopExample {  public static void main(String[] args) {  // 定义一个数组  int[] numbers = {1, 2, 3, 4, 5};  // 使用for循环遍历数组并打印每个元素  for (int i = 0; i < numbers.length; i++) {  System.out.println(numbers[i]);  }  }  
}

2.while循环:当满足某个条件时,重复执行代码块。

只有当满足某个条件时才会执行代码块,跟for循环一样

语法示例:指定条件->condition

while (condition) {  // 执行代码块  
}

代码示例:

public class WhileLoopExample {  public static void main(String[] args) {  // 初始化一个变量  int count = 0;  // 使用while循环,当count小于5时执行循环体  while (count < 5) {  System.out.println("Count is: " + count);  count++; // 增加计数器的值  }  }  
}

3.do…while循环:至少执行一次代码块,然后检查条件,如果条件为真,则继续执行。

至少会执行代码块一次。

语法示例:指定条件->condition

do {  // 执行代码块  
} while (condition);

代码示例:

public class DoWhileLoopExample {  public static void main(String[] args) {  // 初始化一个变量  int count = 5;  // 使用do...while循环,即使条件一开始就不满足,循环体也会执行至少一次  do {  System.out.println("Count is: " + count);  count--; // 减少计数器的值  } while (count > 0); // 检查条件,如果满足则继续循环  }  
}

4. 常用的两个循环解析(区别和使用场景):

  1. 使用场景:for循环更适用于循环次数已知的情况,比如遍历数组或固定次数的操作。而while循环则更适合于循环次数未知的情况,特别是在需要根据特定条件重复执行某段代码时。
  2. 循环的结构:for循环具有固定的三个部分:初始化、循环条件和循环增量。它的表达式通常为for(单次表达式;条件表达式;末尾循环体){中间循环体;}。而while循环只有一个循环条件部分,其表达式为while(表达式){循环体}。
  3. 执行条件的判断方式:for循环在执行末尾循环体后会再次进行条件判断,如果条件仍然成立,则继续重复循环,直到条件不成立时跳出循环。而while循环在满足条件时进入循环,当条件不满足时,执行完循环体内全部语句后再跳出循环。
  4. 循环体的执行顺序:在for循环中,循环变量在循环体内部进行修改,并且在循环体结束后再次更新循环变量。而while循环的循环变量通常在循环体外部进行修改,因此循环体内必须手动更新循环变量。

四、跳转语句

跳转语句用于改变程序的正常执行流程,包括break语句continue语句return语句

1. break语句:用于跳出循环或switch语句。

代码示例:

  1. 跳出循环
public class BreakStatementExample {  public static void main(String[] args) {  for (int i = 0; i < 10; i++) {  if (i == 5) {  break; // 当i等于5时,跳出循环  }  System.out.println("i is: " + i);  }  System.out.println("Loop finished.");  }  
}

在这个例子中,当i等于5时,break语句会被执行,从而终止for循环。因此,只会打印出i从0到4的值。

  1. 跳出switch语句的略

2. continue语句:用于跳过当前循环的剩余部分,进入下一次循环。

代码示例:

public class ContinueStatementExample {  public static void main(String[] args) {  for (int i = 0; i < 10; i++) {  if (i == 5) {  continue; // 当i等于5时,跳过本次循环的剩余部分  }  System.out.println("i is: " + i);  }  System.out.println("Loop finished.");  }  
}

在这个例子中,当i等于5时,continue语句会被执行。因此,i等于5的情况不会被打印出来,而是直接开始下一次循环迭代。

3. return语句:用于从方法中返回一个值,并结束方法的执行。

return可以无返回值,也可以返回基本数据类型或者对象

代码示例:

public class ReturnExample {  public static void main(String[] args) {  printHello();int result = add(5, 3);  System.out.println("The sum is: " + result);  }  // 返回基本数据类型public static int add(int a, int b) {  int sum = a + b;  return sum; // 返回两个整数的和  }  // 无返回值public static void printHello() {  System.out.println("Hello, World!");  return; // 在void方法中,return语句是可选的,通常用于提前退出方法  } 
}

4. 注意

break和continue只能用在循环或switch语句中。如果尝试在其他上下文中使用它们,编译器会报错。此外,break和continue语句的使用应当谨慎,因为它们会改变代码的正常执行流程,可能导致代码难以理解和维护。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/739361.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Dart中,读取文件有两种常见的方式:使用 Stream 和使用 Future

使用 Stream 读取文件&#xff1a; import dart:io;void main() {Stream<List<int>> stream File("example.txt").openRead();stream.listen((List<int> event) {// 处理文件内容print(event);}); }异步处理&#xff1a; Stream 适用于处理大文件…

Qualcomm AI Hub-API介绍

Qualcomm AI Hub极大的简化了AI 模型部署到边缘设备的过程。本文主要介绍了Qualcomm AI Hub使用的各种API接口&#xff0c;还有各个模型配置的参数数据&#xff0c;具体可以参考API documentation API介绍&#xff1a; Core API API的核心功能&#xff0c;可直接通过qai_hub获…

代码随想录算法训练营第55天| Leetcode 583. 两个字符串的删除操作、Leetcode 72. 编辑距离

文章目录 Leetcode 583. 两个字符串的删除操作Leetcode 72. 编辑距离 Leetcode 583. 两个字符串的删除操作 题目链接&#xff1a;Leetcode 583. 两个字符串的删除操作 题目描述&#xff1a; 给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步…

Linux命令:wget命令

1 wget命令 1.1 简介 wget命令是一种常用的网络工具&#xff0c;用于从Web服务器下载文件。 wget命令基于HTTP、HTTPS和FTP协议从指定的URL下载文件。它可以在Linux和Unix系统的命令行中使用&#xff0c;并支持各种参数来定制下载行为。Wget也可以根据HTML、XHTML和CSS页面中…

JavaScript---lazyload图片懒加载处理_IntersectionObserver

IntersectionObserver API兼容性&#xff1a; 部分代码展示&#xff1a; // 懒加载处理const imgsElem document.querySelectorAll(img);const topElem document.querySelector(#top);// IntersectionObserverconst Observer new IntersectionObserver((entries, observer) …

Redis 大key和热key问题及处理

一、说说什么是Redis、及特点&#xff1f; Redis是一个基于内存存储数据运行并支持持久化、使用key/value形式存储的高性能的nosql数据库&#xff0c;适合用于存储频繁访问&#xff0c;数据量较小的场景下。 特点&#xff1a; 支持数据持久化&#xff1a;可以将内存中的数据保…

STL(C++)

STL&#xff1a;标准模板库&#xff0c;它提供了一系列实现了常见数据结构和算法的模板类和函数。 STL的六大组件 容器 用于存放数据 std::string&#xff1a;字符串类&#xff0c;类比容器 std::vector&#xff1a;单端动态数组。支持随机访问&#xff0c;适合频繁访问元素…

PWARL CTF and others

title: 一些复杂点的题目 date: 2024-03-09 16:05:24 tags: CTF 2024年3月9日 今日习题完成&#xff1a; 1.BUU [网鼎杯 2020 半决赛]AliceWebsite 2.[RoarCTF 2019]Online Proxy 3.[Polar CTF]到底给不给flag呢 4.网鼎杯 2020 总决赛]Game Exp [RoarCTF 2019]Online Proxy …

Java设计模式之代理模式

代理模式是 Java 中常用的设计模式之一&#xff0c;它通过引入一个代理对象来控制对实际对象的访问&#xff0c;从而实现对目标对象的间接访问和控制。代理模式可以用于多种场景&#xff0c;比如权限控制、延迟加载、日志记录等。 在 Java 中&#xff0c;代理模式通常分为静态…

【软件工程导论】——软工学绪论及传统软件工程(学习笔记)

&#x1f4d6; 前言&#xff1a;随着软件产业的发展&#xff0c;计算机应用逐步渗透到社会生活的各个角落&#xff0c;使各行各业都发生了很大的变化。这同时也促使人们对软件的品种、数量、功能和质量等提出了越来越高的要求。然而&#xff0c;软件的规模越大、越复杂&#xf…

X64 页表结构

PML4&#xff08;Page Map Level 4&#xff09;是x86-64架构中用于管理虚拟内存地址翻译的四级页表结构之一。它是一种树形结构&#xff0c;由多个页目录表&#xff08;Page Directory Pointer Table&#xff0c;PDPT&#xff09;组成&#xff0c;每个PDPT有512个指向下一级页表…

Hololens 2应用开发系列(3)——MRTK基础知识及配置文件配置(中)

Hololens 2应用开发系列&#xff08;3&#xff09;——MRTK基础知识及配置文件配置&#xff08;中&#xff09; 一、前言二、输入系统2.1 MRTK输入系统介绍2.2 输入数据提供者&#xff08;Input Data Providers&#xff09;2.3 输入动作&#xff08;Input Actions&#xff09;2…

Date类型及dayjs的使用总结

一、Date() Date数据类型用于处理日期和时间&#xff0c;它可以表示自1970年1月1日00:00:00 UTC&#xff08;Coordinated Universal Time&#xff0c;国际协调时间&#xff09;以来的毫秒数。 1.创建Date对象 例如&#xff1a;Tue Oct 31 2023 14:01:33 GMT0800 (中国标准时…

算法刷题day28

目录 引言一、截断数组二、双端队列三、日期统计 引言 这几道题是周赛里的几道题目&#xff0c;第一道题目我没用这种方法&#xff0c;但还是做出来了&#xff0c;用的一种比较特殊的思考方法&#xff0c;就是把每一个点都判断出来&#xff0c;不满足要求的就舍弃&#xff0c;…

【你也能从零基础学会网站开发】Web建站之javascript入门篇 JavaScript事件处理

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;程序猿、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 什么是DHTML …

Linux基础命令[16]-head

文章目录 1. head 命令说明2. head 命令语法3. head 命令示例3.1 不加参数3.2 -c&#xff08;按照字节显示&#xff09;3.3 -n&#xff08;按照行数显示&#xff09;3.4 -v&#xff08;显示文件名&#xff09; 4. 总结 1. head 命令说明 head&#xff1a;用来显示文件开头&…

Linux认识与学习BASH

Linux认识与学习BASH 认识BASH这个Shellshell是什么系统的合法shell与/etc/shells功能Bash Shell的功能查询命令是否为Bash shell 的内置命令(type)命令的执行与快速编辑按钮 shell的变量功能什么是变量&#xff1f;变量的使用与设置&#xff1a;echo、变量设置规则、unset环境…

springboot网页时装购物系统链接

链接:https://pan.baidu.com/s/1mCmCSbqUCv48_a6wiLBdJg?pwdfalz 提取码:falz 2600套项目源码 https://kdocs.cn/l/cuAdxEBfLiqA 工作室精心制作&#xff0c;包括小程序项目&#xff0c;springboot项目&#xff0c;传统ssm项目&#xff0c;前后端分离项目。你可以用来制作自…

Stable Diffusion 模型下载:Comic Babes(漫画宝贝)

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 条目内容类型大模型基础模型SD 1.5来源CIVITAI作者datmuttdoe文件名称comicBabes_v2.safet…

20240311 大模型快讯

//社区生态// 零一万物自研全导航图向量数据库。零一万物宣布推出基于全导航图的新型向量数据库笛卡尔&#xff08;Descartes&#xff09;&#xff0c;已包揽权威榜单 ANN-Benchmarks 6 项数据集评测第一名。 //语言大模型// 清华发布大模型长文本理解方法InfLLM。InfLLM在没…