You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将代码中insideIsGreater等整型变量改为布尔值优化效率

修改后完全对齐原有逻辑的代码

int amountPassed = 0;
// 原整型标记0对应false,1对应true,初始状态都为未触发
boolean insideIsGreater = false;
boolean outsideIsGreater = false;

for (Measurement measurement : measurements) {
    double outsideTemp = measurement.getOutsideTemp();
    double insideTemp = measurement.getInsideTemp();

    if (outsideTemp > insideTemp) {
        // 原判断outsideIsGreater == 0等价于判断标记为未触发
        if (!outsideIsGreater) {
            amountPassed++;
            // 更新状态为已触发对应模式
            outsideIsGreater = true;
            insideIsGreater = false;
        }
    } else {
        if (insideTemp > outsideTemp) {
            // 原判断insideIsGreater == 0等价于判断标记为未触发
            if (!insideIsGreater) {
                amountPassed++;
                insideIsGreater = true;
                outsideIsGreater = false;
            }
        }
    }
}

核心修改说明

原代码中的两个整型变量本质是状态标记,仅用来表示「是否处于对应温度更高的连续状态」,和布尔值的语义完全匹配,修改为布尔类型后不会带来额外性能开销,同时代码可读性大幅提升,更便于后续维护:

  • 变量定义层面:两个标记变量从int类型改为boolean类型,初始值false对应原来的初始值0,表示当前未处于对应温度更高的连续状态
  • 判断逻辑层面:原来的outsideIsGreater == 0等价于布尔值取反!outsideIsGreater,insideIsGreater == 0等价于!insideIsGreater
  • 状态更新层面:原来的赋值1改为赋值true,赋值0改为赋值false
  • 原有逻辑的所有行为完全保留:温度相等的场景不会触发计数,也不会修改状态标记,和原代码效果完全一致

可选优化(不改变原有逻辑的前提下简化代码)

由于两个布尔标记是互斥的(同一时间最多只有一个为true),可以合并为单个状态变量进一步简化:

import java.util.Objects;

int amountPassed = 0;
// null表示初始状态,true表示上次是室外温度更高,false表示上次是室内温度更高
Boolean lastIsOutsideGreater = null;

for (Measurement measurement : measurements) {
    double outsideTemp = measurement.getOutsideTemp();
    double insideTemp = measurement.getInsideTemp();
    if (outsideTemp == insideTemp) {
        continue;
    }
    boolean currentIsOutsideGreater = outsideTemp > insideTemp;
    if (!Objects.equals(currentIsOutsideGreater, lastIsOutsideGreater)) {
        amountPassed++;
        lastIsOutsideGreater = currentIsOutsideGreater;
    }
}

内容的提问来源于stack exchange,提问作者user16968684

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 09:15:01