gpt4 book ai didi

java - 如何在 Java 中跳过计算 0 * ... 之后算术表达式的剩余部分

转载 作者:行者123 更新时间:2023-11-30 06:45:52 24 4
gpt4 key购买 nike

在逻辑表达式中,如果不需要,剩余部分将被跳过

boolean b = false && checkSomething( something)
//checkSomething() doesn't get called

使用算术表达式实现相同目的的好方法是什么?

int i = 0 * calculateSomethig ( something ) 

可以在 * 之前添加 if 。但是有没有更优雅的方法来解决这个问题呢?无需在表达式中添加太多内容,以便表达式本身看起来尽可能接近原始

为什么我不想使用 ifs?来自

return calculateA() * calculateB()

它会变得笨重且不清晰

int result
int a = calculateA();
if (a!=0) {
result = a*calculateB()
}else{
result = 0
}
return result
  • 8 行代码而不是 1 行,
  • 这些表达式可能比 a*b 更复杂
  • 这些表达式代表业务逻辑,所以我想保留它们清晰易读
  • 可能有一大堆

我为什么要为此烦恼?因为计算方法可能很昂贵

  • 使用其他进行搜索和排序的地方的值
  • 可以立即执行许多这样的表达式(在用户事件之后,用户应该“立即”看到结果
  • P(表达式中的*0)>0.5

最佳答案

&&|| 被称为短路运算符,因为它们不会评估 JVM 是否会在不评估整个表达式的情况下找到整个表达式的值。例如,JVM 不必计算以下表达式的第二部分来告诉其计算结果为 true:

6 == (2 + 4) || 8 == 9

JVM 不必计算以下所有表达式来告诉其计算结果为 false:

9 == 8 && 7 == 7

乘法运算符 (*) 不是短路运算符。因此,它的行为并非如此。您可以按照您提到的使用 if 语句来执行此操作。没有预定义的方法可以做到这一点。

关于java - 如何在 Java 中跳过计算 0 * ... 之后算术表达式的剩余部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43697225/

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