当前位置:首页 > 工具 > 正文内容

Java流程控制与循环结构详解

访客 工具 2026年8月9日 1

分支结构:switch语句

switch作为多分支选择结构,其表达式支持的数据类型包括:

  • 基本整型:byte、short、char、int
  • 包装类型:Byte、Short、Character、Integer
  • 枚举类型(Enum)
  • 字符串类型(String,Java 7+)

关键注意事项:

  1. case后的值必须是编译期常量,不允许使用变量
  2. case标签的类型需与switch表达式类型匹配或兼容
  3. case穿透问题:每个case分支末尾建议添加break语句
  4. default分支位置灵活,通常置于末尾处理兜底逻辑
  5. 多case合并写法:
    // 传统写法
    case 1: case 2: case 3:
        执行语句;
        break;
    
    // Java 12+ 箭头语法
    switch (score) {
        case 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100 -> System.out.println("优秀");
        case 60, 61, 62, 63, 64, 65, 66, 67, 68, 69 -> System.out.println("及格");
        default -> System.out.println("其他");
    }

循环结构实践

以素数筛选为例,演示循环的嵌套应用:

public class PrimeFilter {
    public static void main(String[] args) {
        // 外层循环遍历待检测数值
        for (int candidate = 2; candidate <= 100; candidate++) {
            boolean isPrime = true;
            
            // 内层循环:检测candidate是否为素数
            // 优化:只需检测至平方根即可
            int boundary = (int) Math.sqrt(candidate);
            for (int divisor = 2; divisor <= boundary; divisor++) {
                if (candidate % divisor == 0) {
                    isPrime = false;
                    break; // 发现因子即可终止内层循环
                }
            }
            
            if (isPrime) {
                System.out.printf("%d ", candidate);
            }
        }
    }
}

算法优化点:将检测上限从n/2降至√n,时间复杂度由O(n²)优化为O(n√n)。

跳转语句:break与continue

语句作用范围行为特征
break当前最内层循环/switch立即终止整个循环结构
continue当前循环迭代跳过本次迭代剩余代码,进入下一轮循环

带标签的跳转(用于多层嵌套):

outer: for (int row = 0; row < matrix.length; row++) {
    inner: for (int col = 0; col < matrix[row].length; col++) {
        if (matrix[row][col] == target) {
            System.out.println("找到目标位置: (" + row + "," + col + ")");
            break outer; // 直接跳出外层循环
        }
    }
}

标签命名遵循标识符规则,冒号紧跟标签名后。此机制在复杂嵌套结构中可精确控制跳转目标,但过度使用会降低代码可读性。

相关文章

Trojan服务器搭建与配置

一、整体架构(先对齐认知)Clash Meta (PC / iOS / Android)        ↓ TLS   Trojan Server (443)        ↓     InternetTrojan 的核心是: TLS + HTTPS 流量伪装 看起来像正常网站 非常适合...

Tailscale 的详细用法

Tailscale 是一种基于 WireGuard 协议 的 零配置 VPN(虚拟私有网络)服务,让设备之间能够 安全、加密地直接连接,就像它们在同一个本地网络一样。它的核心特点是 简单、安全、跨平台。Tailscale 非常适合 没有公网 IP、两台电脑不在同一局域网 的场景。 简单来说,Tailscale 是什么?Tailscale 是一款让你的各种设备(电脑、服务器、手机...

Clash Tun 模式 导致 爱快(iKuai SD-Wan)内网域名无法访问

一、Clash  DNS 配置dns:  enable: true  listen: 0.0.0.0:53  ipv6: true  enhanced-mode: redir-host  nameserver:    - 223.5.5.5    - 223.6.6.6iKuai 内网域名 ...

深入解析Node.js运行环境与异步I/O架构

深入解析Node.js运行环境与异步I/O架构

核心定义与价值Node.js本质上是一个JavaScript运行环境,而非编程语言或应用框架。它赋予了JavaScript脱离浏览器在服务端、命令行工具及网络应用中执行的能力。其核心意义在于:用单一语言打通前后端开发壁垒。基于事件驱动与非阻塞I/O的架构特性,Node.js在处理API网关、实时通信及微服务等I/O密集型场景时表现卓越,已成为现代后端工程的主流选择。浏览器沙箱限制1995年Java...

ADO.NET SQL参数化查询的最佳实践

在 ADO.NET 中执行 SQL 查询时,参数化查询是一种关键的安全措施和性能优化手段。它通过将 SQL 命令和用户提供的数据分开处理,有效防止了 SQL 注入攻击,并有助于数据库缓存执行计划。下面总结了几种常用的参数化查询方式。 1. 使用 SqlParameter 对象(推荐) 这是最推荐的参数化查询方式。通过显式创建 SqlParameter 对象,您可以精确控制参数的类...

基于ELK的日志集中化分析系统搭建

构建统一日志管理平台的必要性 在分布式架构中,各服务节点独立运行,日志分散存储于不同主机。传统通过命令行工具如grep、awk逐个检索日志的方式,在数据量庞大时效率极低,难以实现快速定位问题。为提升运维效率,需建立集中式日志处理体系,具备日志采集、传输、存储、分析与告警能力。 ELK技术栈核心组件解析 Elasticsearch:分布式搜索引擎,支持全文检索、实时数据分析和高可用集群部署,...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。