猿问

将多个 int 值与 0 进行比较的有效方法

我正在尝试将三个长度与 0 进行比较,并且想知道是否有比重复“!= 0”更有效/更干净的方法。


public static boolean isTriangle(int lengthA, int lengthB, int lengthC) {

    if (lengthA != 0 && lengthB != 0 && lengthC != 0) { //is there a shorter/cleaner way to write this?

        //do a thing

    }

    return false;

}


沧海一幻觉
浏览 122回答 4
4回答

智慧大石

您可以使用IntStream和allMatchif(IntStream.of(lengthA,lengthB,lengthC).allMatch(i->i!=0)) {     // do a thing  }noneMatch或者也使用IntStream.of(lengthA,lengthB,lengthC).noneMatch(i->i==0)另一种方法是使用 util 方法public static boolean isNotZero(int val) {       return val!=0;     }现在简化if条件if (isNotZero(lengthA) && isNotZero(lengthB) && isNotZero(lengthC)) { 

慕桂英546537

你问了三件事;你要求的代码是更短更高效清洁工我有一个替代方案给你:if ((lengthA & lengthB & lengthC) != 0)这是正确的 - 它的作用与您的旧代码相同(它使用按位与)它更短。它可能更有效,但只有良好的微基准测试才能证实。即使是这样,也不应该指导您。由于第 3 点,只有当它在使用性能分析工具的应用程序中显示为瓶颈时才应考虑它,而这种可能性非常非常小。但它并不干净。我的意思是,这将使您的代码更难以阅读和理解,并且任何维护您的代码的人现在都必须考虑位操作。任何提议的替代方案很可能也是如此。您在原始代码中所做的事情已经足够好了;这是人们所理解的,而且很可能是您可以为此目的编写的最简洁的代码。

森栏

最佳答案(恕我直言): “甚至不要尝试去猜测优化编译器。” 只需以最准确地指定(对您的人类同胞来说,仅此而已......)您希望计算机执行的操作的方式 指定源代码。不要假设实际提供给硬件的机器指令的实际序列实际上与此相对应。 “这很神奇。真的。”

www说

对于Java语言来说,你的代码很好。在 Java 中没有更好的方法来做到这一点。
随时随地看视频慕课网APP

相关分类

Java
我要回答