java 中的 for foreach while循环的比较

java技术经典面试题-详尽解析版 java技术经典面试题-详尽解析版,是本人在有基本解析的基础上,又对部分比较抽象的或难以理解的做了补充和深入解析,部分附了代码,对更好的理解java试题有很大的帮助。加了“我要提问,深入解析,疑点解答”等部分,整体来说还是比较全面和易于理解的,是找工作时用得上的好资料。 立即下载

 

java for foreach while循环的比较

关键字: java

在java中究竟是一般的for循环,还是for的增强型foreach,或是while的执行效率比较快呢,我用了一个简单的程序来分析3种循环

public static void main(String[] args) {

 

List<Integer> map = new ArrayList<Integer>();

for (int i = 0; i < 100000; i++) {

map.add(i);

}

 

 

long currTime = System.currentTimeMillis();

 

//基本的for

int z = map.size();

// for (int i = 0; i < z; i++) {

// int tmp = map.get(i);

// System.out.println(tmp);

// }

//foreach

// for (Integer integer : map) {

// int tmp = integer;

// System.out.println(tmp);

// }

//while

// int i = 0 ;

// while(i<z){

// int tmp = map.get(i);

// System.out.println(tmp);

// i++;

// }

//

// long time = System.currentTimeMillis() - currTime ;

// System.out.println(time);

//

// }

下面是3种循环得出的数据(时间单位为毫秒)

      for                   foreach                    while      

第一组比较(4次)

      1313                  1329                       1219

      1266                  1063                       1156

      1078                  1109                       1125

      1297                  1047                       1266

总时间

      4954                  4548                       4766

第二组比较

      1219                  1125                       1109

      1172                  1062                       1188

      1313                  1109                       1125

      1125                  1296                       1125

总时间

      4829                  4592                       4547

第三组比较

      1265                  1078                       1125

      1062                  1062                       1094

      1328                  1109                       1094

      1329                  1235                       1125

总时间

      4984                  4484                       4438

从上面的数据我们可以看出foreach和while的效率几乎是差不多的,而for则相对较慢一些。

 

这是不是代表着foreach可以替代掉for呢,显然不是foreach的内部原理其实还是 Iterator

但它不能像Iterator一样可以人为的控制,而且也不能调用iterator.remove();更不能使用下标来方便的访问元素.

foreach这种循环一般只适合做数组的遍历,提取数据显示等,不适合用于增加删除和使用下标等复杂的操作.

用一个最简单的程序来说明用foreach来进行赋值操作造成的错误.

public class test {

  public static void main(String[] args) 

     { 

     User[] users = new User[2]; 

     users[0] = new User();

     users[1] = new User();

 

//          for(int i=0; i<users.length; i++) 

//          { 

//              users[i] = new User(); 

//          } 

 

       for(User user:users) 

       { 

       user = new User(); 

       } 

         

         System.out.println(users[0].name); 

     } 

 

}

 

class User 

{ 

     String name = "nick";    

} 

第一种for循环可以正常的赋值,而第二种foreach就会报出空指针.

 

for循环和while循环在使用上有一定的差异,但从实现的效果来看都是基本一样的。

for循环再某些方面要更优一些如无限循环 while(true) for(;;)

  编译前              编译后

  while (1);        mov eax,1

                                              test eax,eax

                                              je foo+23h

                                              jmp foo+18h

 

    编译前              编译后

    for (;;);          jmp foo+23h

    从编译后的结果我们可以看出for的指令少,而且没有判断,显然更快.

 

  到底最好最差呢,其实都是相对的,根据不同的情况找到最优的解决才是最好的.

 

源文档 <http://nick970.javaeye.com/blog/519957>

Tiny windows 11 安装与部署 需要注意,安装完后键入 windows 键,输入 update 先更新系统。点击开始,等待完成即可,用户可自定义。 阅读详情

相关推荐

CentOS7下通过YUM源高效部署Zabbix7 Agent指南

本文详细指导在已结束生命周期的CentOS7系统上,通过更换YUM源(如阿里云镜像)并添加Zabbix官方仓库,高效部署Zabbix7 Agent。文章涵盖从源配置、软件安装、关键参数修改到服务启动与防火墙设置的全流程,帮助用户解决依赖错误,快速建立服务器监控。

weixin_29230059的博客 269

foreach、for和while的区别

foreach、for和while的区别

m0_37258559的博客 695

【实战指南】基于YOLOv11的肺结节检测系统开发与优化(LUNA2016数据集)

本文提供了基于YOLOv11模型和LUNA2016数据集开发肺结节检测系统的完整实战指南。详细介绍了从环境搭建、数据预处理、模型训练与优化,到构建Web应用系统的全流程,旨在帮助开发者快速掌握医疗影像AI项目的核心开发技能。

weixin_29031057的博客 141

探究for、foreach和while:循环结构的选择与优劣

三种循环各有各的特点和优势,在特定的情况下选择合适的循环方式,是一个成熟的程序员必备的能力,循环结果目的,但是对于一些特殊情况就可能会导致一些安全问题的产生。for循环:- 用于已知循环次数的情况,通常用于遍历范围内的整数或按步长递增/递减的值。- 使用计数器或循环变量控制循环的次数。- 适合处理迭代次数明确的情况。while循环:- 用于未知循环次数的情况,循环条件在循环体内判断。- 循环在满足条件时重复执行。

weixin_43885959的博客 1183

车载以太网入坑指南,从小白到懂哥的进阶之路【技术分享】

各位技术大佬们好!最近公司项目涉及到车载以太网,刚开始完全懵逼,花了大半个月时间各种查资料、测试设备,总算是摸清了门道。想着互联网上卧虎藏龙,肯定有不少大佬对这个技术感兴趣,所以写个帖子分享一下,顺便求各位大佬指点。

starelink的博客 1262

Reactor 响应式编程(第一篇:Reactor核心)

响应式:响应式编程: 全异步、消息、事件回调默认还是用当前线程,生成整个流、发布流、流操作.log();//只要不指定线程池,默认发布者用的线程就是订阅者的线程;

moments的博客 1573

JAVA中for循环与while循环区别

3. 执行方式:for循环先执行初始化语句,然后判断循环条件,如果条件为真则执行循环体代码,然后执行操作语句,再进行下一次循环;而while循环先判断循环条件,如果为真则执行循环体代码,然后再次判断条件,如此循环直到条件为假跳出循环。而while循环中需要手动控制循环条件,以防止无限循环。2. 语法:for循环在开始时需要初始化一个循环控制变量,然后指定循环的条件和每次循环后的操作。1. 使用场景:for循环适用于已知循环次数的情况,而while循环适用于未知循环次数的情况。while (循环条件) {

weixin_73134956的博客 1252

在ros里给机械臂加上夹爪和底盘后,控制真实机械臂

使用ur3_bringup 可以连接真实机械臂 使用官方的ur3_moveit_planning_execution.launch 可以对机械臂 moveit规划。 但是只有机械臂,没有夹爪。 官方如图: 我把原来的ur3_moveit_config 复制出来,修改 然后把ur3.xacro 等模型文件复制出来修改,修改完之后,有了夹爪,有了底盘。 规划组什么的使用moveit setup assistant 配置过了。 在rviz中可以笛卡尔空间规划了。 ...

超级菜 2718

Java for循环和while循环的区别

Java for循环和while循环的区别 一、两种循环的格式不同: 控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。 二、内存角度: while:while循环结束后,任然可以访问循环中的变量(消耗内存); for:for循环结束后,不能访问循环中的变量(节省内存); 三、应用角度: .

weixin_48553717的博客 5524

诊断测试工具CANoe.DiVa从入门到精通系列——开门见山

### 工具主要用于测试ECU的诊断功能。关于自动化诊断测试可以分为如下内容: ### -> 1、根据诊断需求规范进行cdd文件的编辑(现阶段主要是诊断问卷调查表); ### -> 2、新建Diva工程,导入对应的诊断数据库文件生成测试用例; ### -> 3、新建CANoe工程,导入CANoe.DiVa生成的Diva工程; ### -> 4、根据测试报告进行错误处理。

Soly_kun的博客 3556

28、时间敏感网络中可靠性感知的综合路由与调度

本文针对时间敏感网络(TSN)中现有路由与调度机制主要关注时间触发(TT)流量而忽略其他类型流量效用的问题,提出了一种可靠性感知的综合路由与调度机制。通过将具有不同可靠性和延迟要求的各类流量的联合路由与调度问题形式化为基于优化模理论(OMT)的混合整数规划问题,设计了完整的路由约束与调度约束,并分析了不同类型流量的传输效用,设定了优化目标以提升整体网络性能。实验结果表明,该机制在满足TT流量严格时延与可靠性要求的同时,显著提高了AVB和BE等非关键流量的传输效用,实现了多类型流量的高效协同传输。

hhh00的博客 95

foreach和while循环的区别

      两者的不同之处在于它们背后的运作方式。      在while循环里,Perl会读入一行输入,把它存入某个变量并且执行循环主体。然后,它再回头去找其他的输入行。      在foreach循环中,整行输入操作符会在列表上下文中执行(因为foreach需要逐行处理列表的内容)。在循环开始执行之前,它必须先将输入全部读进来。      当输入大容量的文件时,使用foreach会占用大量的内

Lynn.Zhou的专栏 8485

【华为OD机试真题 2025B卷】737、统计监控器、需要打开多少监控器 | 机试真题+思路参考+代码分析(C++、Java、Py、C语言、JS)

【华为OD机试真题 2025B卷】737、统计监控器、需要打开多少监控器 | 机试真题+思路参考+代码分析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2025e卷,od机试,2025E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2025华为

KJ.JK 716

java for foreach 效率_java中for foreach while循环的比较

在java中究竟是一般的for循环,还是for的增强型foreach,或是while的执行效率比较快呢,我用了一个简单的程序来分析3种循环public static void main(String[] args) {List map = new ArrayList();for (int i = 0; i < 100000; i++) {map.add(i);}long currTime =...

weixin_42444974的博客 359

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

java for/foreach/while 3种循环性能比较

在循环100000次,且循环体中操作都是声明一个局部变量m。 3种耗时如下: foreach风格 :9130 normal for :12314 while :4258 可以看出while 性能最好,其次是for,其中for each 性能比for 高出30%。

xianghui12333的博客 5865

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

java for foreach 效率_java for foreach while循环的比较 - nick970 - JavaE...

在java中究竟是一般的for循环,还是for的增强型foreach,或是while的执行效率比较快呢,我用了一个简单的程序来分析3种循环public static void main(String[] args) {List map = new ArrayList();for (int i = 0; i < 100000; i++) {map.add(i);}long currTime =...

weixin_36486277的博客 226

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

java for 循环

在java中,for循环可以看做是while循环的特殊情况,即判断条件变得更加单一,for循环常常用于遍历某个数组。关于循环的具体介绍可以参考while循环。 for循环 通过一个例子演示for循环: int[] nums = {1,2,3,4,5,}; for(int i=0; i<nums.length;i++){ System.out.println(nums[i]); } for(...

weixin_42733083的博客 642

【Java入门到精通】第6讲--循环结构

循环是程序中的重要流程结构之一。循环语句能够使程序代码重复执行,适用于需要重复一段代码直到满足特定条件为止的情况。所有流行的编程语言中都有循环语句。Java 中采用的循环语句主要有 for、while、和do-while 。另外 Java 5 之后推出了 for-each 循环语句,for-each 循环是 for 循环的变形,它是专门为集合遍历而设计的。for-each 并不是一个关键字。......

检哥说IT的博客 2413

java list.get(i) 效率_Java中迭代列表中数据时几种循环写法的效率比较

Java中经常会用到迭代列表数据的情况,本文针对几种常用的写法进行效率比较。虽然网上已经有了类似的文章,但是对他们的结论并不认同。常见的实现方法:1.for循环:for(inti=0;ifor(inti=0,size=list.size();i一般人都会认为第二种写法效率高。2.foreach:for(Objectobj:list)这是一种简洁的写法,只能对列表进行...

weixin_31708613的博客 911

java循环语句(最详细教程)!!!

我们为什么要使用循环语句,他到底有什么用呢?生活中,我们会遇到一种情况,就是重复的去干某一件事,那么如果在代码中重复使用一段代码的话,我们的工作量将会很大,其次代码也会变得冗余,但是需求又必须要满足。那么,我们就要使用循环语句。

W_a_n_g_c_h_i的博客 1826

循环结构(含练习题)

for循环可以修改数组元素,foreach循环不能修改数组元素 当循环次数或范围确定时,多用for循环,反之多用while循环 do-while循环,循环体至少执行一次,不要漏掉末尾的分号!! 循环结构一般由四部分组成:初始化语句、条件判断、步进语句、循环体

m0_45690923的博客 811

12、循环结构(While循环,do while循环,for循环)

项目场景: 循环结构 代码描述: @Override public void run() { bytes = mmInStream.read(buffer); mHandler.obtainMessage(READ_DATA, bytes, -1, buffer).sendToTarget(); } 原因分析: 提示:这里填写问题的分析: 例如:Handler 发送消息有两种方式,分别是 Handler.obtainM

weixin_51997075的博客 269

Java学习——运算符、分支与循环

本文为大家带来了Java中的运算符、分支与循环的知识讲解,希望对你有帮助~~

weixin_53919192的博客 625

循环(Java语言)

循环

m0_52254526的博客 203

JavaScript循环结构

while循环 for循环 foreach循环

weixin_44201223的博客 233

for那种方式效率最高

package com.data.struct; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class Test2 { public static void main(String[] args) { List list = new Array

mark's technic world 920
上一篇: 增强JCreator -- 将Astyle和JUnit集成到JCreator
下一篇: Java "有理由" 比 C++ 快
codecooler
博客等级 码龄19年 47粉丝 5原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值