JAVA基础 - 控制语句

目录

一. 简介

二. 分支语句

三. 循环语句

四. 跳转语句



一. 简介

在 Java 中,控制语句用于控制程序的执行流程,根据不同的条件决定执行哪些代码块。常见的控制语句包括:

  1. if-else 语句:根据条件的真假执行不同的代码块。

  2. switch 语句:根据表达式的值选择执行不同的代码分支。

  3. for 循环:用于重复执行一段代码特定的次数。

  4. while 循环:只要条件为真,就重复执行循环体中的代码。

  5. do-while 循环:先执行一次循环体,然后只要条件为真,就继续执行。

这些控制语句使程序能够根据不同的情况做出决策和重复执行特定的操作,从而实现更复杂和灵活的逻辑。

二. 分支语句

在 Java 中,分支语句用于根据不同的条件执行不同的代码块。主要的分支语句包括 if-else 语句和 switch 语句。

1. if-else 语句

if-else 语句根据条件的真假来决定执行哪个代码块。

  • 简单的 if 语句:
if (condition) {// 当条件为真时执行的代码
}
  • if-else 语句:
if (condition) {// 当条件为真时执行的代码
} else {// 当条件为假时执行的代码
}
  • 嵌套的 if-else 语句:
if (condition1) {// 当条件 1 为真时执行的代码
} else if (condition2) {// 当条件 1 为假且条件 2 为真时执行的代码
} else {// 当前面的条件都为假时执行的代码
}

2. switch 语句

switch 语句根据一个表达式的值来选择执行不同的代码分支。

switch (expression) {case value1:// 当表达式的值等于 value1 时执行的代码break;case value2:// 当表达式的值等于 value2 时执行的代码break;// 可以有多个 case 分支default:// 当表达式的值与前面的 case 都不匹配时执行的代码
}

需要注意以下几点:

  • expression 的类型通常为 byte 、 short 、 int 、 char ,从 Java 7 开始也可以是 String 类型。
  • 每个 case 后面的值必须是常量,且不能重复。
  • break 语句用于在执行完一个 case 分支后跳出 switch 语句。如果没有 break ,程序会继续执行下一个 case 分支的代码,直到遇到 break 或者 switch 语句结束。

以下是一个示例代码,展示了 if-else 和 switch 语句的使用:

public class BranchingStatementsExample {public static void main(String[] args) {int num = 2;// if-else 示例if (num == 1) {System.out.println("Number is 1");} else if (num == 2) {System.out.println("Number is 2");} else {System.out.println("Number is neither 1 nor 2");}// switch 示例switch (num) {case 1:System.out.println("In switch: Number is 1");break;case 2:System.out.println("In switch: Number is 2");break;default:System.out.println("In switch: Number is neither 1 nor 2");}}
}

三. 循环语句

在 Java 中,常见的循环语句有 for 循环、while 循环和 do-while 循环。

1. for 循环

for 循环通常用于已知循环次数的情况。它的语法结构如下:

for (初始化表达式; 条件表达式; 更新表达式) {// 循环体
}

例如:

for (int i = 0; i < 5; i++) {System.out.println(i);
}

在上述代码中,首先执行初始化表达式 int i = 0 ,然后判断条件表达式 i < 5 ,如果为真,则执行循环体,执行完循环体后,执行更新表达式 i++ ,然后再次判断条件表达式,如此循环,直到条件表达式为假。

2. while 循环

while 循环在执行循环体之前先判断条件,如果条件为真,则执行循环体。其语法结构为:

while (条件表达式) {// 循环体
}

例如:

int i = 0;
while (i < 5) {System.out.println(i);i++;
}

3. do-while 循环

do-while 循环先执行一次循环体,然后再判断条件,如果条件为真,则继续执行循环体。它的语法结构是:

do {// 循环体
} while (条件表达式);

例如:

int i = 0;
do {System.out.println(i);i++;
} while (i < 5);

4. for-each

在 Java 中,for-each 循环也称为增强型 for 循环,它提供了一种更简洁和方便的方式来遍历数组或实现了 java.lang.Iterable 接口的集合(如 ArrayList 、 LinkedList 等)。

for-each 循环的语法如下:

for (元素类型 元素变量 : 数组或集合) {// 循环体
}

以下是使用 for-each 循环遍历数组的示例:

int[] numbers = {1, 2, 3, 4, 5};
for (int num : numbers) {System.out.println(num);
}

以下是遍历 ArrayList 的示例:

import java.util.ArrayList;
import java.util.List;public class ForEachExample {public static void main(String[] args) {List<String> names = new ArrayList<>();names.add("Alice");names.add("Bob");names.add("Charlie");for (String name : names) {System.out.println(name);}}
}

使用 for-each 循环的优点是代码简洁,并且避免了在传统 for 循环中可能出现的越界错误。然而,它不能用于在遍历过程中修改数组或集合的元素(如果需要修改,仍需要使用传统的 for 循环)。

四. 跳转语句

在 Java 中,跳转语句用于改变程序的执行流程。常见的跳转语句有 break 、 continue 和 return 。

break 语句

  • 用于终止循环(如 for 、 while 、 do-while )或 switch 语句的执行,使程序跳出当前循环体或 switch 块。
  • 示例:
    for (int i = 0; i < 10; i++) {if (i == 5) {break;}System.out.println(i);}

在上述代码中,当 i 的值为 5 时,break 语句会使循环终止。

continue 语句

用于跳过当前循环的本次迭代,直接开始下一次迭代。

示例:

    for (int i = 0; i < 10; i++) {if (i % 2 == 0) {continue;}System.out.println(i);}

在这个例子中,当 i 是偶数时,continue 语句会使程序跳过本次循环体中后续的代码,直接进行下一次循环。

return 语句

用于从方法中返回值,并结束方法的执行。

示例:

    public int add(int num1, int num2) {int sum = num1 + num2;return sum;}

在上述方法中,计算两个数的和后,使用 return 语句将结果返回。

跳转语句在控制程序流程方面非常有用,但应谨慎使用,以确保程序的逻辑清晰和可维护性。

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

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

相关文章

Spark实时(一):StructuredStreaming 介绍

文章目录 StructuredStreaming 介绍 一、SparkStreaming实时数据处理痛点 1、复杂的编程模式 2、SparkStreaming处理实时数据只支持Processing Time 3、微批处理&#xff0c;延迟高 4、精准消费一次问题 二、StructuredStreaming概述 三、​​​​​​​​​​​​​​…

BGP选路之AS-PATH

原理概述 当一台BGP路由器中存在多条去往同一目标网络的BGP路由时&#xff0c;BGP协议会对这些BGP路由的属性进行比较&#xff0c;以确定去往该目标网络的最优BGP路由。首先要比较的属性是 Preferred Value&#xff0c;然后是Local Preference&#xff0c;再次是路由生成方式&a…

算法学习笔记:回溯法

回溯法有“通用的解题法”之称。用它可以系统地搜索一个问题的所有解或任一解。回溯法是一个既带有系统性又带有跳跃性的搜索算法。它在包含问题的所有解的解空间树中&#xff0c;按照深度优先的策略&#xff0c;从根节点出发搜索解空间树。算法搜索至解空间树的任一节点时&…

【Android Studio】整合okhttp发送get和post请求(提供Gitee源码)

前言&#xff1a;本篇博客教学大家如何使用okhttp发送同步/异步get请求和同步/异步post请求&#xff0c;这边博主把代码全部亲自测试过了一遍&#xff0c;需要源码的可以在文章最后自行拉取。 目录 一、导入依赖 二、开启外网访问权限 三、发送请求 3.1、发送同步get请求…

关于pycharm上push项目到gitee失败原因

版权声明&#xff1a;本文为博主原创文章&#xff0c;如需转载请贴上原博文链接&#xff1a;https://blog.csdn.net/u011628215/article/details/140577821?spm1001.2014.3001.5502 前言&#xff1a;最近新建项目push上gitee都没有问题&#xff0c;但是当在gitee网站进行了一个…

2024在线PHP加密网站源码

源码介绍 2024在线PHP加密网站源码 更新内容: 1.加强算法强度 2.优化模版UI 加密后的代码示例截图 源码下载 https://download.csdn.net/download/huayula/89568335

kafka集群搭建-使用zookeeper

1.环境准备&#xff1a; 使用如下3台主机搭建zookeeper集群&#xff0c;由于默认的9092客户端连接端口不在本次使用的云服务器开放端口范围内&#xff0c;故端口改为了8093。 172.2.1.69:8093 172.2.1.70:8093 172.2.1.71:8093 2.下载地址 去官网下载&#xff0c;或者使用如…

Mysql的主从复制(重要)和读写分离(理论重要实验不重要)

一、主从复制&#xff1a;架构一般是一主两从。 1.主从复制的模式&#xff1a; mysql默认模式为异步模式&#xff1a;主库在更新完事务之后会立即把结果返回给从服务器&#xff0c;并不关心从库是否接收到以及从库是否处理成功。缺点&#xff1a;网络问题没有同步、防火墙的等…

vue3-video-play 导入 以及解决报错

npm install vue3-video-play --save # 或者 yarn add vue3-video-play import Vue3VideoPlay from vue3-video-play; import vue3-video-play/dist/style.css; app.use(Vue3VideoPlay) <template><div id"main-container-part"><div class"al…

Meta发布最强AI模型,扎克伯格公开信解释为何支持开源?

凤凰网科技讯 北京时间7月24日&#xff0c;脸书母公司Meta周二发布了最新大语言模型Llama 3.1&#xff0c;这是该公司目前为止推出的最强大开源模型&#xff0c;号称能够比肩OpenAI等公司的私有大模型。与此同时&#xff0c;Meta CEO马克扎克伯格(Mark Zuckerberg)发表公开信&a…

opencv grabCut前景后景分割去除背景

参考&#xff1a; https://zhuanlan.zhihu.com/p/523954762 https://docs.opencv.org/3.4/d8/d83/tutorial_py_grabcut.html 环境本次&#xff1a; python 3.10 提取前景&#xff1a; 1、需要先把前景物体框出来 需要坐标信息&#xff0c;可以用windows自带的画图简单提取像素…

Concat() Function-SQL-字符串拼接函数

Concat() Function-SQL 在SQL中&#xff0c;CONCAT() 函数用于将两个或多个字符串连接在一起。 不同数据库管理系统可能有些许差异&#xff0c;但基本用法和语法通常是相似的。 语法 CONCAT(string1, string2, ...)string1, string2, …: 这些是需要连接的字符串参数。可以…

【时序约束】读懂用好Timing_report

一、静态时序分析&#xff1a; 静态时序分析&#xff08;Static Timing Analysis&#xff09;简称 STA&#xff0c;采用穷尽的分析方法来提取出整个电路存在的所有时序路径&#xff0c;计算信号在这些路径上的传播延时&#xff0c;检查信号的建立和保持时间是否满足时序要求&a…

定时器+外部中断实现NEC红外线协议解码

一、前言 1.1 功能介绍 随着科技的进步和人们生活水平的提高&#xff0c;红外遥控器已经成为了日常生活中不可或缺的电子设备之一&#xff0c;广泛应用于电视、空调、音响等多种家电产品中。 传统的红外遥控器通常只能实现预设的有限功能&#xff0c;无法满足用户对设备更加智…

TCP客户端connect断线重连

文章目录 TCP客户端connect断线重连1、为什么要断线重连2、实现代码 TCP客户端connect断线重连 1、为什么要断线重连 客户端会面临服务器崩溃的情况&#xff0c;我们可以试着写一个客户端重连的代码&#xff0c;模拟并理解一些客户端行为&#xff0c;比如游戏客户端等. 考虑到…

实战篇(十二):如何使用 Processing 创建一个多功能的简易吃豆人游戏

如何使用 Processing 创建一个多功能的简易吃豆人游戏 文章目录 如何使用 Processing 创建一个多功能的==简易==吃豆人游戏引言准备工作第一步:设置基本框架第二步:创建 Pacman 类第三步:创建 Obstacle 类第四步:添加分数系统第五步:运行游戏完整代码结论参考资料引言 吃…

STL常用算法——常用查找算法

自定义类型都要用仿函数判断 1.find() class Person { public:Person(string name,int age){this->m_Name name;this->m_Age age;}bool operator(const Person &p)//重载operator{if (this->m_Name p.m_Name && this->m_Age p.m_Age){return true;…

NVIDIA 全面转向开源 GPU 内核模块

NVIDIA 全面转向开源 GPU 内核模块 文章目录 NVIDIA 全面转向开源 GPU 内核模块支持的 GPU安装程序更改使用带有 CUDA 元包的包管理器 使用运行文件使用安装帮助脚本包管理器详细信息dnf&#xff1a;Red Hat Enterprise Linux、Fedora、Kylin、Amazon Linux 或 Rocky Linuxzypp…

网络安全等级保护:什么是网络安全等级保护?(非常详细)零基础入门到精通,收藏这一篇就够了

关键词&#xff1a; 网络安全等级保护 等级保护 网络 信息系统 旧话重提&#xff0c;一直以来&#xff0c;我们不断强调“等级保护”制度是我国的网络安全领域的基本制度、基本策略和基本方法&#xff0c;是促进信息化健康发展&#xff0c;维护国家安全、社会秩序和公共利益的…

数字图像处理中的常用特殊矩阵及MATLAB应用

一、前言 Matlab的名称来源于“矩阵实验室&#xff08;Matrix Laboratory&#xff09;”&#xff0c;其对矩阵的操作具有先天性的优势&#xff08;特别是相对于C语言的数组来说&#xff09;。在数字图像处理中&#xff0c;为了提高编程效率&#xff0c;我们可以使用多种方式来创…