gpt4 book ai didi

java - 减少测试条件和更新值时的重复方法调用(java)

转载 作者:行者123 更新时间:2023-12-02 03:39:50 26 4
gpt4 key购买 nike

假设条件检查包含获取值的方法调用。如果满足条件,则使用该方法返回的值进行值更新。这是一个简化的示例。

// x and maxValue are e.g. both int, methodCall(x) returns int    
if (methodCall(x) > maxValue) maxValue = methodCall(x);

如果条件满足,JVM 是否会调用 methodCall 2 次?有没有办法避免这种性能损失(无需将 methodCall(x) 分配给局部变量,从而牺牲内存和计算时间)并直接重新使用条件检查的结果进行分配?

哈根

最佳答案

是的,该方法被调用两次。如果只想调用一次,则需要将结果保存在 if 之前的变量中。

int value = methodCall(x);
if (value > maxValue) maxValue = value;

请注意,该值保存在局部变量(而不是字段)中。

编辑:此用例的更优雅的解决方案(正如 bcsb1001 在评论中指出的那样)是使用 Math#max :

maxValue = Math.max(methodCall(x), maxValue);

关于java - 减少测试条件和更新值时的重复方法调用(java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36965927/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com