Java 流程控制语句

简介: 本文介绍了 Java 中控制执行流程的关键字,包括 if-else、while、do-while、for、switch 等,并通过生动的例子讲解其用法。重点分析了条件判断与循环控制的实现方式,帮助读者掌握 Java 基础语法的核心内容。

Java 中涉及控制执行流程的关键字有 if-else、while-do-while、for、switch、return、break、continue 等等;我们来挑几个来说道说道。

1、要么生,要么死

在网络上看到这么一句话:“人生不过三条路,要么生,要么死,要么生不如死”,经典啊!这句话套用在 if-else 语句上也非常的贴切,不信你看:

只有一个 if 语句

体验AI代码助手

代码解读

复制代码

if (布尔表达式) {
// 语句
}

或者一个if语句加上一个else语句

体验AI代码助手

代码解读

复制代码

if (布尔表达式) {
// 语句
} else {
// 语句
}

或者一个if语句加上一个 else if 语句,再加一个 else 语句

体验AI代码助手

代码解读

复制代码

if (布尔表达式) {
// 语句
} else if (布尔表达式) {
// 语句
} else {
// 语句
}

2、想清楚再走,还是先走一步再说

while 和 do-while 语句常用来控制不确定次数的循环语句,除了形式上稍显不同之外,do-while 会比 while 多执行一次(同等条件下哦);其格式如下:

while

体验AI代码助手

代码解读

复制代码

while(布尔表达式) {
// 语句
}

do-while

体验AI代码助手

代码解读

复制代码

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

3、次数确定请用 for

for 循环有两种形式,分别如下:

①、创建int变量的形式(可以主动指定循环次数,比如说可以把 i < strs.length() 改为 i < 3 ,这样就只循环 3 次而不是 4 次)

体验AI代码助手

代码解读

复制代码

String [] strs = {"沉", "默", "王", "二"};
for(int i = 0; i < strs.length(); i++) {
    String str = strs[i];
}

稍微解释一下:第一次循环之前要进行变量初始化 int i = 0,随后进行条件测试 i < strs.length(),然后执行语句 String str = strs[i];,语句结束后进行“步进” i++

②、俗称“foreach”的形式(不必指定下标就能取出元素)

体验AI代码助手

代码解读

复制代码

String [] strs = {"沉", "默", "王", "二"};
for (String str : strs) {
}

也稍微解释一下:冒号 : 之前声明了 String 类型的变量 str;冒号 : 之后是数组 strs;在执行循环的时候,Java 内部会依次取出数组 strs 中的每一个元素,然后赋值给变量 str,直到最后一个元素。

4、可以 switch 字符串了

当 if-else 的条件超出三个以上时(看起来有点臃肿),可使用 switch 语句来进行替代。switch 语句的形式如下:

体验AI代码助手

代码解读

复制代码

switch(condition) {
    case calue1 :
        // 语句
        break;
    case calue2 :
        // 语句
        break;
    case calue3 :
        // 语句
        break;
    default :
        // 语句
}

使用 switch 语句时需要特别注意的就是 break 关键字,该用的地方一定不要忘记! 否则,switch 语句就会触发下一个 case 分支,而忽略掉没有 break 关键字的当前分支。

从 Java SE 7 开始,switch 语句支持字符串形式的条件了;在这之前,switch 只支持类型为 char、byte、short 或 int 的常量表达式,以及枚举常量。

5、斐波那契数列

斐波那契数列几乎是每一个学习编程的人都绕不开的一道笔试题;斐波那契数列是“斐波那契”(伟大的数学家)在养兔子时候发现的非常有意思的数列:

  • 第一个月小兔子没有繁殖能力,所以还是一对;
  • 两个月后,生下一对小兔总数共有两对;
  • 三个月以后,老兔子又生下一对,因为小兔子还没有繁殖能力,所以一共是三对;

……依次类推可以列出下表:

人们发现自然规律的能力好强,有没有?怎么使用 Java 实现斐波那契数列呢?

规律:第一个数+第二个数=第三个数,第二个数+第三个数=第四个数,第三个数+第四个数=第五个数,以此类推

流程控制语句有没有掌握,把这道斐波那契数列的面试题做出来就能测试出来了。具体代码:

体验AI代码助手

代码解读

复制代码

public class Fibonacci {
    public static void main(String[] args) {
        int start = 1;
        int next = 1;
        System.out.print(start + "、" + next + "、");
        // 从3开始到第num个斐波那契数
        for (int i = 3; i <= 12; i++) {
            int last = start + next;
            System.out.print(last + "、");
            start = next;
            next = last;
        }
        System.out.println();
        // 通过迭代计算,效率很低
        for (int i = 1; i <= 12; i++) {
            System.out.print(getFibonacci(i) + "、");
        }
    }

    private static int getFibonacci(int index) {
        if (index == 1 || index == 2) {
            return 1;
        }
        return getFibonacci(index - 1) + getFibonacci(index - 2);
    }
}

思路1:先指定前两个数,然后在 for 循环中计算接下来的数,然后用后一个数替换前一个。

思路2:通过迭代完成,下标是 1 或者 2 的时候返回 1,其余的数等于前一个数和前前一个数的和。


转载来源:https://juejin.cn/post/6844903989264252942

相关文章
|
2月前
|
人工智能 中间件 Go
Go 项目实战:全局异常处理
在 Go 项目中,异常处理是保障程序稳定性的关键。本文介绍 Go 的错误处理机制与 panic 恢复方法,并探讨如何实现全局异常处理中间件,以统一捕获和处理运行时错误,提升代码可维护性与健壮性。
124 7
|
2月前
|
JSON 数据可视化 计算机视觉
大语言模型也可以进行图像分割:使用Gemini实现工业异物检测完整代码示例
本文将通过一个实际应用场景——工业传送带异物检测,详细介绍如何利用Gemini的图像分割能力构建完整的解决方案。
116 2
大语言模型也可以进行图像分割:使用Gemini实现工业异物检测完整代码示例
|
1月前
|
人工智能 监控 中间件
如何用go语言实现类似AOP的功能
本文介绍了如何在 Go 语言中借鉴 Java 的 AOP(面向切面编程)思想,通过 Gin 框架的中间件和函数包装机制实现日志记录、权限校验等横切关注点与业务逻辑的解耦。内容涵盖 AOP 的优点、Go 中的实现方式、Gin 中间件与 AOP 的异同,帮助开发者提升代码模块化与可维护性。
|
3月前
|
XML 存储 前端开发
免费在线图片转Base64编码工具
利用图片转 Base64 编码工具(支持 PNG, GIF, JPEG 等格式)。操作极其简单:将目标图片拖拽至工具指定区域,即可自动完成转换并获得编码结果。
1278 3
|
5月前
|
开发框架 人工智能 Java
破茧成蝶:传统J2EE应用无缝升级AI原生
本文探讨了技术挑战和解决方案,还提供了具体的实施步骤,旨在帮助企业顺利实现从传统应用到智能应用的过渡。
破茧成蝶:传统J2EE应用无缝升级AI原生
|
3月前
|
SQL 存储 监控
如何解决 MySQL主从复制延时问题?
本文深入解析MySQL主从复制延迟问题,涵盖检测方法、常见原因及优化解决方案。通过性能调优、配置改进和监控工具,帮助提升数据库高可用性与数据一致性。
121 1
|
4月前
|
Java 程序员 应用服务中间件
【高薪程序员必看】万字长文拆解Java并发编程!(2 2-2)
📌 核心痛点暴击:1️⃣ 面了8家都被问synchronized锁升级?一张图看懂偏向锁→重量级锁全过程!2️⃣ 线程池参数不会配?高并发场景下这些参数调优救了项目组命!3️⃣ volatile双重检测单例模式到底安不安全?99%人踩过的内存可见性大坑!💡 独家亮点抢先看:✅ 图解JVM内存模型(JMM)三大特性,看完再也不怕指令重排序✅ 手撕ReentrantLock源码,AQS队列同步器实现原理大揭秘✅ 全网最细线程状态转换图(附6种状态转换触发条件表)
85 0
|
3月前
|
XML 人工智能 Java
注入Java Bean的方式
本文总结了 Spring Boot 中常见的 Bean 注入方式,包括字段注入(`@Autowired`)、构造器注入(推荐)、Setter 方法注入、`@Resource` 按名称注入、`@Bean` 定义复杂 Bean、`@Value` 注入配置值、XML 配置、`ApplicationContextAware` 手动获取 Bean 以及 JSR-330 的 `@Inject`。同时分析了 Setter 注入逐渐被淡化的原因,强调构造器注入的不可变性和安全性优势,并推荐结合 Lombok 简化代码。文章还提供了按需选择注解的建议和最佳实践,帮助开发者根据场景选择合适的依赖注入方式。
170 49
|
3月前
|
机器学习/深度学习 人工智能 前端开发
AI+Code驱动的M站首页重构实践:从技术债务到智能化开发
本文分享了阿里巴巴找品M站首页重构项目中AI+Code提效的实践经验。面对M站技术栈陈旧、开发效率低下的挑战,我们通过楼层动态化架构重构和AI智能脚手架,实现了70%首页场景的标准化覆盖 + 30%的非标场景的研发提速,开发效率分别提升90%+与40%+。文章详细介绍了楼层模板沉淀、AI辅助代码生成、智能组件复用评估等核心实践,为团队AI工程能力升级提供了可复制的方法论。
258 15
AI+Code驱动的M站首页重构实践:从技术债务到智能化开发
|
2月前
|
人工智能 测试技术 持续交付
Golang深入浅出之-Go语言中的持续集成与持续部署(CI/CD)
持续集成与持续部署(CI/CD)是现代软件开发的关键实践,尤其适用于Go语言项目。本文探讨了Go项目中常见的CI/CD问题,如测试覆盖不足、版本不一致和构建时间过长,并提供解决方案及GitHub Actions示例代码,帮助开发者优化流程,提升交付效率和质量。

热门文章

最新文章