Java循环操作哪个快

news2025/4/22 0:24:09

文章目录

  • Java循环操作哪个快
    • 一、引言
    • 二、循环操作性能对比
      • 1、普通`for`循环与增强`for`循环
        • 1.1、代码示例
      • 2、`for`循环与`while`循环
        • 2.1、代码示例
      • 3、循环优化技巧
        • 3.1、代码示例
    • 三、循环操作的适用场景
    • 四、使用示例
    • 五、总结

Java循环操作哪个快

在这里插入图片描述

一、引言

在Java开发中,循环操作是常见的编程任务,但不同的循环方式在性能上存在差异。选择合适的循环结构对于优化程序性能至关重要。本文将探讨几种常见的Java循环操作的性能差异,并通过代码示例和测试结果进行分析。

二、循环操作性能对比

1、普通for循环与增强for循环

普通for循环通过索引访问集合元素,而增强for循环(for-each循环)通过迭代器实现。在性能测试中,普通for循环通常优于增强for循环,尤其是在处理大数据量时。

1.1、代码示例

java复制

// 普通for循环
long startTime = System.currentTimeMillis();
int sum = 0;
for (int i = 0; i < 1000000000; i++) {
    sum += i;
}
System.out.println("普通for循环耗时:" + (System.currentTimeMillis() - startTime));

// 增强for循环
startTime = System.currentTimeMillis();
sum = 0;
for (int i : new int[1000000000]) {
    sum += i;
}
System.out.println("增强for循环耗时:" + (System.currentTimeMillis() - startTime));

2、for循环与while循环

for循环和while循环在逻辑上是等价的,但在某些情况下,for循环的性能略优于while循环,因为for循环的结构更紧凑。

2.1、代码示例

java复制

// for循环
long startTime = System.currentTimeMillis();
int sum = 0;
for (int i = 0; i < 1000000000; i++) {
    sum += i;
}
System.out.println("for循环耗时:" + (System.currentTimeMillis() - startTime));

// while循环
startTime = System.currentTimeMillis();
sum = 0;
int i = 0;
while (i < 1000000000) {
    sum += i;
    i++;
}
System.out.println("while循环耗时:" + (System.currentTimeMillis() - startTime));

3、循环优化技巧

通过拆分循环操作可以提高性能。例如,将一个循环拆分为多个并行操作,可以充分利用CPU的多核优势。

3.1、代码示例

java复制

// 普通循环
long startTime = System.currentTimeMillis();
long sum = 0;
for (int i = 1; i <= 1000000000; i++) {
    sum += i;
}
System.out.println("普通循环耗时:" + (System.currentTimeMillis() - startTime));

// 拆分循环
startTime = System.currentTimeMillis();
long sum1 = 0, sum2 = 0, sum3 = 0, sum4 = 0;
for (int i = 1; i <= 1000000000; i += 4) {
    sum1 += i;
    sum2 += i + 1;
    sum3 += i + 2;
    sum4 += i + 3;
}
System.out.println("拆分循环耗时:" + (System.currentTimeMillis() - startTime));

三、循环操作的适用场景

不同的循环操作适用于不同的场景。普通for循环适合需要精确控制迭代次数的场景,而增强for循环适合遍历集合或数组。

四、使用示例

以下是一个使用普通for循环和增强for循环的示例,展示了在不同场景下的性能差异。

java复制

import java.util.ArrayList;
import java.util.List;

public class LoopExample {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < 10000000; i++) {
            list.add(i);
        }

        // 普通for循环
        long startTime = System.currentTimeMillis();
        int sum = 0;
        for (int i = 0; i < list.size(); i++) {
            sum += list.get(i);
        }
        System.out.println("普通for循环耗时:" + (System.currentTimeMillis() - startTime));

        // 增强for循环
        startTime = System.currentTimeMillis();
        sum = 0;
        for (int num : list) {
            sum += num;
        }
        System.out.println("增强for循环耗时:" + (System.currentTimeMillis() - startTime));
    }
}

五、总结

在Java中,普通for循环通常比增强for循环和while循环具有更好的性能,尤其是在处理大数据量时。通过拆分循环操作,可以进一步提高性能。开发者应根据具体的业务需求和场景选择合适的循环方式,以优化程序的性能。


版权声明:本博客内容为原创,转载请保留原文链接及作者信息。

参考文章

  • Java循环操作哪个快?-阿里云开发者社区
  • 性能】【算法】for循环,性能提高_java for循环优化-CSDN博客

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

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

相关文章

Maven jar 包下载失败问题处理

Maven jar 包下载失败问题处理 1.配置好国内的Maven源2.重新下载3. 其他问题 1.配置好国内的Maven源 打开⾃⼰的 Idea 检测 Maven 的配置是否正确&#xff0c;正确的配置如下图所示&#xff1a; 检查项⼀共有两个&#xff1a; 确认右边的两个勾已经选中&#xff0c;如果没有请…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.25 视觉风暴:NumPy驱动数据可视化

1.25 视觉风暴&#xff1a;NumPy驱动数据可视化 目录 #mermaid-svg-i3nKPm64ZuQ9UcNI {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-i3nKPm64ZuQ9UcNI .error-icon{fill:#552222;}#mermaid-svg-i3nKPm64ZuQ9UcNI …

Baklib推动数字化内容管理解决方案助力企业数字化转型

内容概要 在当今信息爆炸的时代&#xff0c;数字化内容管理成为企业提升效率和竞争力的关键。企业在面对大量数据时&#xff0c;如何高效地存储、分类与检索信息&#xff0c;直接关系到其经营的成败。数字化内容管理不仅限于简单的文档存储&#xff0c;更是整合了文档、图像、…

SQLGlot:用SQLGlot解析SQL

几十年来&#xff0c;结构化查询语言&#xff08;SQL&#xff09;一直是与数据库交互的实际语言。在一段时间内&#xff0c;不同的数据库在支持通用SQL语法的同时演变出了不同的SQL风格&#xff0c;也就是方言。这可能是SQL被广泛采用和流行的原因之一。 SQL解析是解构SQL查询…

【腾讯前端面试】纯css画图形

之前参加腾讯面试&#xff0c;第一轮是笔试&#xff0c;面试官发的试卷里有一题手写css画一个扇形、一个平行四边形……笔试时间还是比较充裕的&#xff0c;但是我对这题完全没有思路&#x1f62d;于是就空着了&#xff0c;最后也没过。 今天偶然翻到廖雪峰大佬的博客里提到了关…

【C++篇】位图与布隆过滤器

目录 一&#xff0c;位图 1.1&#xff0c;位图的概念 1.2&#xff0c;位图的设计与实现 1.5&#xff0c;位图的应用举例 1.4&#xff0c;位图常用应用场景 二&#xff0c;布隆过滤器 2.1&#xff0c;定义&#xff1a; 2.2&#xff0c;布隆过滤器的实现 2.3&#xff0c; 应…

[EAI-026] DeepSeek-VL2 技术报告解读

Paper Card 论文标题&#xff1a;DeepSeek-VL2: Mixture-of-Experts Vision-Language Models for Advanced Multimodal Understanding 论文作者&#xff1a;Zhiyu Wu, Xiaokang Chen, Zizheng Pan, Xingchao Liu, Wen Liu, Damai Dai, Huazuo Gao, Yiyang Ma, Chengyue Wu, Bin…

Java 23新特性

文章目录 Java 23新特性一、引言二、Markdown文档注释&#xff08;JEP 467&#xff09;示例 三、ZGC&#xff1a;默认的分代模式&#xff08;JEP 474&#xff09;1. 为什么要引入分代模式2. 使用分代模式的优势3. 如何启用分代模式 四、隐式声明的类和实例主方法&#xff08;JE…

二叉树--链式存储

1我们之前学了二叉树的顺序存储&#xff08;这种顺序存储的二叉树被称为堆&#xff09;&#xff0c;我们今天来学习一下二叉树的链式存储&#xff1a; 我们使用链表来表示一颗二叉树&#xff1a; ⽤链表来表⽰⼀棵⼆叉树&#xff0c;即⽤链来指⽰元素的逻辑关系。通常的⽅法是…

C++,vector:动态数组的原理、使用与极致优化

文章目录 引言一、vector 的核心原理1. 底层数据结构1.1 内存布局的三指针模型1.2 内存布局示意图 2. 动态扩容机制2.1 动态扩容过程示例 3. 关键结论4. 代码验证内存布局5. 总结 二、vector 的使用方法1. 基本操作2. 迭代器与范围遍历 三、vector 的注意事项1. 迭代器失效2. 性…

bootstrap.yml文件未自动加载问题解决方案

在添加bootstrap.yml文件后,程序未自动扫描到,即图标是这样的: 查了一些资料,是缺少bootstrap相关依赖,虽然已经添加了spring-cloud-context依赖,但是这个依赖并未引入bootstrap依赖,可能是版本问题,需要手动引入 <dependency><groupId>org.springframework.cloud&…

物联网 STM32【源代码形式-ESP8266透传】连接OneNet IOT从云产品开发到底层MQTT实现,APP控制 【保姆级零基础搭建】

一、MQTT介绍 MQTT&#xff08;Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输协议&#xff09;是一种基于发布/订阅模式的轻量级通讯协议&#xff0c;构建于TCP/IP协议之上。它最初由IBM在1999年发布&#xff0c;主要用于在硬件性能受限和网络状况不佳的情…

计算机网络 性能指标相关

目录 吞吐量 时延 时延带宽积 往返时延RTT 利用率 吞吐量 时延 时延带宽积 往返时延RTT 利用率

软件测试02----用例设计方法

今天目标 1.能对穷举场景设计测试点 2.能对限定边界规则设计测试点 3.能对多条件依赖关系进行设计测试点 4.能对项目业务进行设计测试点 一、解决穷举场景 重点&#xff1a;使用等价类划分法 1.1等价类划分法 重点&#xff1a;有效等价和单个无效等价各取1个即可。 步骤&#…

冷启动+强化学习:DeepSeek-R1 的原理详解——无需监督数据的推理能力进化之路

本文基于 DeepSeek 官方论文进行分析,论文地址为:https://github.com/deepseek-ai/DeepSeek-R1/blob/main/DeepSeek_R1.pdf 有不足之处欢迎评论区交流 原文翻译 在阅读和理解一篇复杂的技术论文时,逐字翻译是一个重要的步骤。它不仅能帮助我们准确把握作者的原意,还能为后续…

014-STM32单片机实现矩阵薄膜键盘设计

1.功能说明 本设计主要是利用STM32驱动矩阵薄膜键盘&#xff0c;当按下按键后OLED显示屏上会对应显示当前的按键键值&#xff0c;可以将此设计扩展做成电子秤、超市收银机、计算器等需要多个按键操作的单片机应用。 2.硬件接线 模块管脚STM32单片机管脚矩阵键盘行1PA0矩阵键盘…

Spring Boot 2 快速教程:WebFlux处理流程(五)

WebFlux请求处理流程 下面是spring mvc的请求处理流程 具体步骤&#xff1a; 第一步&#xff1a;发起请求到前端控制器(DispatcherServlet) 第二步&#xff1a;前端控制器请求HandlerMapping查找 Handler &#xff08;可以根据xml配置、注解进行查找&#xff09; 匹配条件包括…

unity学习25:用 transform 进行旋转和移动,简单的太阳地球月亮模型,以及父子级关系

目录 备注内容 1游戏物体的父子级关系 1.1 父子物体 1.2 坐标关系 1.3 父子物体实际是用 每个gameobject的tranform来关联的 2 获取gameObject的静态数据 2.1 具体命令 2.2 具体代码 2.3 输出结果 3 获取gameObject 的方向 3.1 游戏里默认的3个方向 3.2 获取方向代…

CH340G上传程序到ESP8266-01(S)模块

文章目录 概要ESP8266模块外形尺寸模块原理图模块引脚功能 CH340G模块外形及其引脚模块引脚功能USB TO TTL引脚 程序上传接线Arduino IDE 安装ESP8266开发板Arduino IDE 开发板上传失败上传成功 正常工作 概要 使用USB TO TTL&#xff08;CH340G&#xff09;将Arduino将程序上传…

DeepSeekMoE:迈向混合专家语言模型的终极专业化

一、结论写在前面 论文提出了MoE语言模型的DeepSeekMoE架构&#xff0c;目的是实现终极的专家专业化(expert specialization)。通过细粒度的专家分割和共享专家隔离&#xff0c;DeepSeekMoE相比主流的MoE架构实现了显著更高的专家专业化和性能。从较小的2B参数规模开始&#x…