4 回答

TA貢獻1946條經驗 獲得超3個贊
您可以使用IntStream和allMatch
if(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)) {

TA貢獻1848條經驗 獲得超10個贊
你問了三件事;你要求的代碼是
更短
更高效
清潔工
我有一個替代方案給你:
if ((lengthA & lengthB & lengthC) != 0)
這是正確的 - 它的作用與您的舊代碼相同(它使用按位與)
它更短。
它可能更有效,但只有良好的微基準測試才能證實。即使是這樣,也不應該指導您。由于第 3 點,只有當它在使用性能分析工具的應用程序中顯示為瓶頸時才應考慮它,而這種可能性非常非常小。
但它并不干凈。我的意思是,這將使您的代碼更難以閱讀和理解,并且任何維護您的代碼的人現在都必須考慮位操作。
任何提議的替代方案很可能也是如此。
您在原始代碼中所做的事情已經足夠好了;這是人們所理解的,而且很可能是您可以為此目的編寫的最簡潔的代碼。

TA貢獻1810條經驗 獲得超5個贊
最佳答案(恕我直言): “甚至不要嘗試去猜測優化編譯器。” 只需以最準確地指定(對您的人類同胞來說,僅此而已......)您希望計算機執行的操作的方式 指定源代碼。不要假設實際提供給硬件的機器指令的實際序列實際上與此相對應。 “這很神奇。真的。”
添加回答
舉報