4 回答

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以使用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;
}
現(xiàn)在簡化if條件
if (isNotZero(lengthA) && isNotZero(lengthB) && isNotZero(lengthC)) {

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

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個(gè)贊
最佳答案(恕我直言): “甚至不要嘗試去猜測優(yōu)化編譯器?!?nbsp;只需以最準(zhǔn)確地指定(對(duì)您的人類同胞來說,僅此而已......)您希望計(jì)算機(jī)執(zhí)行的操作的方式 指定源代碼。不要假設(shè)實(shí)際提供給硬件的機(jī)器指令的實(shí)際序列實(shí)際上與此相對(duì)應(yīng)。 “這很神奇。真的?!?/em>
添加回答
舉報(bào)