Java-三种基本控制结构及相关面试题

文章目录

  • 前言
  • 一、 顺序控制结构
    • 1.1 概念
    • 1.2 代码
    • 1.3 NS图中体现
  • 二、分支控制结构
    • 2.1 概念
    • 2.2 if语句
    • 2.3 switch语句
    • 2.4 NS图中的体现
  • 三、循环控制结构
    • 3.1 概念
    • 3.2 for循环
    • 3.3 while循环
    • 3.4 do-while循环
    • 3.5 增强 for 循环
    • NS图中的体现
  • 四、相关面试题
    • 什么是控制流语句?
    • Java中的嵌套循环有哪些特点?
    • Java中的循环结构有哪些特点?
    • 请说明Java中的break关键字和continue关键字?

前言

Java是一种广泛使用的编程语言,它提供了三种基本的控制结构,即顺序结构、分支结构和循环结构。这些结构是Java程序设计中不可或缺的要素,也是Java语言的重要基础。

在本文中,我们将深入探讨这三种基本控制结构的特点和用法。通过了解它们的逻辑,您可以更好地理解和运用它们,从而提高Java程序的设计水平和效率。

一、 顺序控制结构

1.1 概念

顺序控制结构是Java中最简单的控制结构,也是默认的控制结构。在顺序控制结构中,代码按照从上到下的顺序执行,每个语句都会被依次执行。

1.2 代码

public class SequentialControlExample {
    public static void main(String[] args) {
        int x = 5;
        System.out.println("x = " + x); // 输出 x = 5
        x = x * 2;
        System.out.println("x = " + x); // 输出 x = 10
    }
}

在这里插入图片描述

1.3 NS图中体现

在这里插入图片描述

二、分支控制结构

2.1 概念

分支控制结构允许根据条件来执行不同的代码块。Java中的分支控制结构包括if语句和switch语句。

2.2 if语句

if语句允许在满足条件时执行代码块。

一个 if 语句包含一个布尔表达式和一条或多条语句。

if(布尔表达式)
{
   //如果布尔表达式为true将执行的语句
}

if 语句后面可以跟 else 语句,当 if 语句的布尔表达式值为 false 时,else 语句块会被执行。

if(布尔表达式){
   //如果布尔表达式的值为true
}else{
   //如果布尔表达式的值为false
}

以下是一个使用if语句的示例:

public class IfControlExample {
    public static void main(String[] args) {
        int x = 5;
        if (x > 0) {
            System.out.println("x is positive");
        } else if (x < 0) {
            System.out.println("x is negative");
        } else {
            System.out.println("x is zero");
        }
    }
}

在这里插入图片描述
嵌套的 if…else 语句:可以在另一个 if 或者 else if 语句中使用 if 或者 else if 语句。

if(布尔表达式 1){
   如果布尔表达式 1的值为true执行代码
   if(布尔表达式 2){
      如果布尔表达式 2的值为true执行代码
   }
}

在这里插入图片描述

2.3 switch语句

switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。

switch语句允许根据不同的条件执行不同的代码块。

switch(expression){
    case value :
       //业务语句
       break; //可写可不写
    case value :
       //业务语句
       break; //可写可不写
    //可以有任意数量的case语句
    default : //可选
       //语句
}

switch 语句中的变量类型可以是: byte、string、short、int 或者 char。

以下是一个使用switch语句的示例:

public class SwitchControlExample {
    public static void main(String[] args) {
        char grade = 'B';
        switch (grade) {
            case 'A':
                System.out.println("Good job!");
                break;
            case 'B':
                System.out.println("Keep it up!");
                break;
            case 'C':
                System.out.println("You can do better.");
                break;
            default:
                System.out.println("Invalid grade.");
        }
    }
}

在这里插入图片描述

2.4 NS图中的体现

在这里插入图片描述

三、循环控制结构

3.1 概念

顺序结构的程序语句只能被执行一次。如果您想要同样的操作执行多次,就需要使用循环结构。

循环控制结构允许重复执行代码块。Java中的循环控制结构包括for循环、while循环和do-while循环。

3.2 for循环

for循环允许在已知的循环次数内重复执行代码块。

以下是一个使用for循环的示例:

public class ForControlExample {
    public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            System.out.println("i = " + i);
        }
    }
}

关于for循环的说明:
1、执行过程:
for 循环会遍历列表或可迭代对象中的每个元素,并将每个元素赋值给变量名。
执行循环体中的代码,即对每个元素执行相同的操作。
循环体执行完毕后,继续遍历下一个元素,直到遍历完所有元素。
2、循环结束条件:
列表或可迭代对象中的所有元素都被遍历完毕。
用户手动调用 break 语句跳出循环。
3、注意事项:
for 循环中的变量名只存在于循环体中,循环结束后会被销毁。
循环体中的代码可以修改列表或可迭代对象中的元素,但不会影响列表或可迭代对象的长度。

3.3 while循环

while循环允许在满足条件时重复执行代码块。

语法格式如下:

while( 布尔表达式 ) {
  //循环内容
}

以下是一个使用while循环的示例:

public class WhileControlExample {
    public static void main(String[] args) {
        int i = 0;
        while (i < 5) {
            System.out.println("i = " + i);
            i++;
        }
    }
}

在这里插入图片描述

3.4 do-while循环

对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。

do-while循环允许在执行一次代码块后,在满足条件时重复执行代码块。

我们可以看到布尔表达式在循环体的后面,所以语句块在检测布尔表达式之前已经执行了。 如果布尔表达式的值为 true,则语句块一直执行,直到布尔表达式的值为 false。

语法格式如下:

do {
      //业务语句
}while(布尔表达式);

以下是一个使用do-while循环的示例:

public class DoWhileControlExample {
    public static void main(String[] args) {
        int i = 0;
        do {
            System.out.println("i = " + i);
            i++;
        } while (i < 5);
    }
}

在这里插入图片描述

3.5 增强 for 循环

增强 for 循环是Java5 引入了一种主要用于数组的循环

public class Test {
   public static void main(String[] args){
      int [] numbers = {10, 20, 30, 40, 50};
 
      for(int x : numbers ){
         System.out.print( x );
         System.out.print(",");
      }
      System.out.print("\n");
      String [] names ={"heihei", "azhen", "aqiu", "aqing"};
      for( String name : names ) {
         System.out.print( name );
         System.out.print(",");
      }
   }
}

在这里插入图片描述

NS图中的体现

在这里插入图片描述

四、相关面试题

什么是控制流语句?

控制流语句是指用于控制程序执行流程的语句。Java中的控制流语句包括if语句、switch语句、for循环、while循环和do-while循环等。

Java中的嵌套循环有哪些特点?

Java中的嵌套循环具有以下特点:可以嵌套多层,外层循环会影响内层循环的执行,内层循环不会影响外层循环的执行。

Java中的循环结构有哪些特点?

Java中的循环结构具有以下特点:for循环适用于已知循环次数的情况,while循环适用于未知循环次数的情况,do-while循环保证至少执行一次循环体。

请说明Java中的break关键字和continue关键字?

Java中的break语句主要有两个作用,分别是用于跳出循环和用于跳出switch语句。
Java中的continue语句主要有两个作用,分别是用于结束本次循环和用于在switch语句中跳过当前case。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从零开始:如何用Python建立你的第一个人工智能模型

1. 摘要&#xff1a; 在这篇文章中&#xff0c;我们将介绍如何从零开始使用Python建立你的第一个人工智能模型。无论你是刚接触编程的新手&#xff0c;还是有经验的开发者想进一步探索人工智能领域&#xff0c;这篇文章都将为你提供清晰、详细的指南。我们将一步步探索数据预处…

macOS Monterey 12.6.7 (21G651) Boot ISO 原版可引导镜像

macOS Monterey 12.6.7 (21G651) Boot ISO 原版可引导镜像 本站下载的 macOS 软件包&#xff0c;既可以拖拽到 Applications&#xff08;应用程序&#xff09;下直接安装&#xff0c;也可以制作启动 U 盘安装&#xff0c;或者在虚拟机中启动安装。另外也支持在 Windows 和 Lin…

2023年大学计算机专业实习心得14篇

2023年大学计算机专业实习心得精选篇1 20__年已然向我们挥手告别而去了。在20__年初之际&#xff0c;让我们对过去一年的工作做个总结。忙碌的一年里&#xff0c;在领导及各位同事的帮助下&#xff0c;我顺利的完成了20__年的工作。为了今后更好的工作&#xff0c;总结经验&…

《Java黑皮书基础篇第10版》 第17章【笔记】

第十七章 二进制I/O 17.1 引言 文件可以不严谨的分类为文本文件和二进制文件。文本文件指的是可以用文件编辑器进行查看和修改的&#xff0c;二进制文件则不可以使用文本编辑器查看和修改。 例如&#xff0c;Test.java文件储存在文本文件中&#xff0c;因此可以用文本编辑器…

Web安全测试中常见逻辑漏洞解析(实战篇)

前言&#xff1a; 越权漏洞是比较常见的漏洞类型&#xff0c;越权漏洞可以理解为&#xff0c;一个正常的用户A通常只能够对自己的一些信息进行增删改查&#xff0c;但是由于程序员的一时疏忽&#xff0c;对信息进行增删改查的时候没有进行一个判断&#xff0c;判断所需要操作的…

leetcode188. 买卖股票的最佳时机 IV.动态规划-java

买卖股票的最佳时机 IV leetcode188. 买卖股票的最佳时机 IV题目描述 动态规划代码演示 动态规划专题 leetcode188. 买卖股票的最佳时机 IV 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/best-time-to-buy-and-sell-st…

从零构建后端项目-创建SpringBoot项目配置MyBatis

目录 主体介绍 创建SpringBoot项目主要步骤 配置MyBatis 整合高级功能 创建SpringBoot项目 配置Tomcat 配置MySQL数据源 配置Redis数据源 配置MongoDB数据源 运行项目&#xff0c;检测配置 配置MyBatis 创建IDEA数据库连接 生成MyBatis各种文件 配置MyBatis 配…

自然语言处理从入门到应用——静态词向量预训练模型:神经网络语言模型(Neural Network Language Model)

分类目录&#xff1a;《自然语言处理从入门到应用》总目录 《自然语言处理从入门到应用——自然语言处理的语言模型&#xff08;Language Model&#xff0c;LM&#xff09;》中介绍了语言模型的基本概念&#xff0c;以及经典的基于离散符号表示的N元语言模型&#xff08;N-gram…

【Redis基础】

Redis基础 Redis基础Note Redis基础1.初识Redis1.1.认识NoSQL1.1.1.结构化与非结构化1.1.2.关联和非关联1.1.3.查询方式1.1.4.事务1.1.5.总结 1.2.认识Redis1.3.安装Redis1.3.1.依赖库1.3.2.上传安装包并解压1.3.3.启动1.3.4.默认启动1.3.5.指定配置启动1.3.6.开机自启1.3.7.wi…

Win7系统提示Windows Defender无法扫描选定的文件解决方法

Win7 64位系统提示“Windows Defender无法扫描选定的文件”怎么办呢?使用Windows Defender扫描文件,结果弹出如下图窗口,该怎么解决呢,参考下文,一起来解决Win7系统提示“Windows Defender无法扫描选定的文件”的解决方法。 原因分析: 这是因为开启Defender扫描压…

rabbitmq第三课-RabbitMQ高级功能详解以及常用插件实战

一、选择合适的队列. 实际上是可以选择三种队列类型的&#xff0c;classic经典队列&#xff0c;Quorum仲裁队列&#xff0c;Stream流式队列。 后面这两种队列也是RabbitMQ在最近的几个大的版本中推出的新的队列类型。3.8.x推出了Quorum仲裁队列&#xff0c;3.9.x推出了Stream流…

计算机网络基础知识(九)—— 什么是TelnetS?Telnet Over TLS

文章目录 01 | TelnetS02 | OpenSSL03 | 实现思路服务器处理流程客户端处理流程 04 | 代码实现服务端代码客户端代码编译过程 & 执行结果 前面学习了什么是HTTPS协议&#xff0c;了解了HTTPS的工作原理以及具体的工作流程&#xff0c;了解了HTTP协议和HTTPS协议之间的区别。…

Elasticsearch 安装(Linux)

ElasticSearch 概念安装安装es 后台启动 & 停止启动nohup 记录pid 停止 其他启动错误max number of threads内存不足 Cannot allocate memoryfailed to obtain node locks 概念 ES是一款分布式全文搜索引擎&#xff0c;基于Lucene&#xff0c;进行了二次封装&#xff0c;更…

ElasticSearch-安装Head可视化插件

安装Head可视化插件 首先需要依赖node.js和npm环境 1 安装node.js 官方下载地址:http://nodejs.cn/download/ 下载LTS版本&#xff08;长期稳定版本&#xff09; 安装可以更改安装路径,其余的都是选择 下一步傻瓜是安装 安装成功后如下 命令测试 node -v 查看node的版本 n…

Redis 2023面试5题(二)

一、Redis key没设置过期时间却被redis主动删除了 如果一个 Redis 键没有设置过期时间&#xff0c;那么 Redis 无法判断该键是否应该自动删除。因此&#xff0c;如果一个没有设置过期时间的键被 Redis 主动删除了&#xff0c;可能是以下原因之一&#xff1a; 内存不足&#x…

【论文笔记】BEIT:BERT PRE-TRAINING OF IMAGE TRANSFORMERS

GitHub 1.介绍 1.1 挑战 视觉转换器的输入单元&#xff0c;即图像补丁&#xff0c;没有预先存在的词汇。预测遮罩面片的原始像素往往会在预训练短程依赖性和高频细节上浪费建模能力 1.2 回顾一下Bert的基本架构和流程 输入编码&#xff1a;通过tokenizer将输入的文本中的每…

OceanBase—01(入门篇——使用docker安装OceanBase以及介绍连接OB的几种方式)

OceanBase—01&#xff08;入门篇——使用docker安装OceanBase以及介绍连接OB的几种方式&#xff09; 1. 前言1.1 安装部署参考1.1.1 安装前提1.1.2 参考 1.1 修改数据库用户名密码1.2 总结常见连接命令 2. 安装部署OceanBase2.1 启动 OceanBase 数据库实例2.1.1 拉取镜像并启动…

eclipse (C/C++) 常用设置记录

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台&#xff1b;现公司用其作为开发单片机的IDE&#xff1b;因此记录一下常用的配置方法&#xff1b; 文章目录 零、常用默认快捷键一、高亮相同变量二、修改高亮变量颜色三、在整个工程内搜索某个函数四、切换主题五、改变字…

编译原理笔记16:自下而上语法分析(3)构造 DFA、DFA 对下一步分析的指导(有效项目)

目录 由 NFA 用子集法构造 DFA由 LR(0) 项目直接构造识别活前缀的 DFA构造 DFA求拓广文法 GCLOSURE & GO例&#xff1a; 构造 DFA DFA 指导下一步分析有效项目 看了前面的内容&#xff0c;我们已经了解到&#xff1a;分析表和驱动器算法&#xff0c;是 LR 分析器的核心。 …

基于Java+Swing+Mysql实现图书管理系统V2.0

基于JavaSwingMysql实现图书管理系统V2.0 一、系统介绍二、功能展示1.项目内容2.项目骨架3.数据库表4.主界面5.添加6、修改7、查询8、删除 四、其它1.其他系统实现五.获取源码 一、系统介绍 本系统主要有对图书信息的增删改查操作功能。 项目类型&#xff1a;Java SE项目&…