Java的控制流语句详解

2024-03-12 18:52
文章标签 java 详解 语句 控制流

本文主要是介绍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语句的使用应当谨慎,因为它们会改变代码的正常执行流程,可能导致代码难以理解和维护。

这篇关于Java的控制流语句详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

mybatis的mapper对应的xml写法及配置详解

《mybatis的mapper对应的xml写法及配置详解》这篇文章给大家介绍mybatis的mapper对应的xml写法及配置详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录前置mapper 对应 XML 基础配置mapper 对应 xml 复杂配置Mapper 中的相

MySQL 事务的概念及ACID属性和使用详解

《MySQL事务的概念及ACID属性和使用详解》MySQL通过多线程实现存储工作,因此在并发访问场景中,事务确保了数据操作的一致性和可靠性,下面通过本文给大家介绍MySQL事务的概念及ACID属性和... 目录一、什么是事务二、事务的属性及使用2.1 事务的 ACID 属性2.2 为什么存在事务2.3 事务

eclipse如何运行springboot项目

《eclipse如何运行springboot项目》:本文主要介绍eclipse如何运行springboot项目问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目js录当在eclipse启动spring boot项目时出现问题解决办法1.通过cmd命令行2.在ecl

Java中的Closeable接口及常见问题

《Java中的Closeable接口及常见问题》Closeable是Java中的一个标记接口,用于表示可以被关闭的对象,它定义了一个标准的方法来释放对象占用的系统资源,下面给大家介绍Java中的Clo... 目录1. Closeable接口概述2. 主要用途3. 实现类4. 使用方法5. 实现自定义Clos

Jvm sandbox mock机制的实践过程

《Jvmsandboxmock机制的实践过程》:本文主要介绍Jvmsandboxmock机制的实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、背景二、定义一个损坏的钟1、 Springboot工程中创建一个Clock类2、 添加一个Controller

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

MQTT SpringBoot整合实战教程

《MQTTSpringBoot整合实战教程》:本文主要介绍MQTTSpringBoot整合实战教程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录MQTT-SpringBoot创建简单 SpringBoot 项目导入必须依赖增加MQTT相关配置编写

spring-gateway filters添加自定义过滤器实现流程分析(可插拔)

《spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔)》:本文主要介绍spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔),本文通过实例图... 目录需求背景需求拆解设计流程及作用域逻辑处理代码逻辑需求背景公司要求,通过公司网络代理访问的请求需要做请