Java基础-for循环的不凡

本文探讨了Java中for循环的基础用法,包括初始化、执行顺序和循环嵌套。通过例子展示了如何在循环中减少不必要的计算,提高性能,特别是在处理大量数据时。作者通过对比分析了优化后的for循环代码,强调了预计算变量以避免重复计算的重要性。
  • 前言
    for几乎是每个语言的基础语句,熟练的使用for是每个程序员所必备的,然而你真的懂得for循环的不凡麽?

  • 基础语句
    for循环一般由4个表达式组成

    	for(表达式1;表达式2;表达式3){
    		表达式4;
    	}
    
    第一表达式第二表达式第三表达式第四表达式
    初始化变量的语句条件判断语句每次循环结束后执行语句逻辑处理代码块

    例:1-1

    	int[] array = {1,2,3};
        for(int i = 0;i < array.length;i++){
            System.out.println(array[i]);
        }
    
  • 执行顺序
    第一表达式→第二表达式→如果满足→第四表达式→第三表达式
    第一表达式→第二表达式→如果不满足→结束

    也就是对应的:
    初始化变量i→判断i是否小于array.length→如果满足→执行console.log(array[i]);→执行i++
    初始化变量i→判断i是否小于array.length→如果不满足→结束

  • 循环嵌套
    在一个循环体语句中又包含另一个循环语句称为循环嵌套
    在很多的业务场景中,单一的循环往往不能满足大多业务需求,大多时候我们都需要进行多层的循环嵌套。

    例:
    注:这里为了方便写的是js的写法

    	var array = [{
    				"id": 1,
    				"names": [{
    					"uname": 1,
    					"cname": 1
    				}, {
    					"uname": 2,
    					"cname": 2
    				}]
    				}, {
    					"id": 2,
    					"names": [{
    						"uname": 1,
    						"cname": 1
    					}, {
    						"uname": 2,
    						"cname": 2
    					}]
    				}]
    	
    

    这样的数据格式,想要拿到每个uname的值则需要进行循环嵌套的写法:

    	for(var i = 0;i < array.length;i++){
    		var names= array[i].names;
    		//第二个循环
    		for(var j= 0;j< names.length;j++){
    			console.log( names[j].uname;);	
    		}
    	}
    

    执行顺序:初始化变量i→判断i是否小于array.length→执行第四表达式→拿到names数组的值→遍历names数组→执行i++

    遍历names数组又拆分为:
    初始化变量j→判断j是否小于names.length→执行第四表达式→执行j++

  • 解析优化
    直接看下优化后的代码:1-2

    	int[] array = {1,2,3};
        for(int i = 0,length = array.length;i < length;i++){
            System.out.println(array[i]);
        }
    

    1-1为我们平时最为常见的for循环写法,我们可以看到在执行第二表达式的时候,每个循环都会去计算array.length的值,然后将array.length的值保存到栈内存中,最后才拿出i与存放到栈内存中的值进行比较,这样的话如果当循环的量级达到一定程度的时候,所产生的多余消耗是直观体现出来的。

    1-2则在第一表达式的时候直接初始化了变量i和变量length,所以再后续的每个循环里面都无需再去计算length的值,直接比较i和length的大小,性能与1-1比自然得到提升。

    证:

    	long startTime=System.nanoTime();
        int[] array = new int[500000];
        for(int i = 0,length = array.length;i < length;i++){
            
        }
        long endTime=System.nanoTime();
        System.out.println("程序运行时间: "+(endTime-startTime)+"ns");
    	//10101000ns
    
    	long startTime=System.nanoTime();
        int[] array = new int[5000000];
        for(int i = 0;i < array.length;i++){
    
        }
        long endTime=System.nanoTime();
        System.out.println("程序运行时间: "+(endTime-startTime)+"ns");
        //12382600ns
    

    这个需要足够多的次数与量级足够多的循环次数以及足够稳定的运行环境验证是否正确

考虑柔性负荷的综合能源系统低碳经济优化调度【考虑碳交易机制】(Matlab代码实现)内容概要:本文围绕“考虑柔性负荷的综合能源系统低碳经济优化调度”展开,重点研究在碳交易机制下如何实现综合能源系统的低碳化与经济性协同优化。通过构建包含风电、光伏、储能、柔性负荷等多种能源形式的系统模型,结合碳交易成本与能源调度成本,提出优化调度策略,以降低碳排放并提升系统运行经济性。文中采用Matlab进行仿真代码实现,验证了所提模型在平衡能源供需、平抑可再生能源波动、引导柔性负荷参与调度等方面的有效性,为低碳能源系统的设计与运行提供了技术支撑。; 适合人群:具备一定电力系统、能源系统背景,熟悉Matlab编程,从事能源优化、低碳调度、综合能源系统等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究碳交易机制对综合能源系统调度决策的影响;②实现柔性负荷在削峰填谷、促进可再生能源消纳中的作用;③掌握基于Matlab的能源系统建模与优化求解方法;④为实际综合能源项目提供低碳经济调度方案参考。; 阅读建议:建议读者结合Matlab代码深入理解模型构建与求解过程,重点关注目标函数设计、约束条件设置及碳交易成本的量化方式,可进一步扩展至多能互补、需求响应等场景进行二次开发与仿真验证。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值