好吧,我正在構建程序來檢查很多領域。如果至少有1個字段不行,那麼我不希望我的程序花時間檢查其他字段。所以讓我們來看看這段代碼:如果isOK = false,Java是否浪費時間檢查conditionA中的「if(isOK && conditionA)」?
// Util.isReadyToUse method return true if the string is ready for using, & return false if it is not.
boolean isOK=true;
if(!Util.isReadyToUse(firstName)){
isOK=false;
}
else if(isOK && !Util.isReadyToUse(lastName)){
isOK=false;
}
else if(isOK && !Util.isReadyToUse(email)){
isOK=false;
}
.....more checking
if(isOK) {
//do sthing
}
好吧,運行時,程序會先檢查!Util.isReadyToUse(firstName)
。假設它返回(isOK = false)。接下來該程序將檢查isOK && !Util.isReadyToUse(lastName)
。
所以我這裏的問題是,由於isOK
目前是假的,那麼程序會花費時間檢查!Util.isReadyToUse(lastName)
之後的條件&&
?
好吧,作爲一個人,如果你看到isOK=false
現在你看isOK && !Util.isReadyToUse(email)
,那麼你不想浪費時間去看看!Util.isReadyToUse(email)
因爲ISOK =虛假和u isOK
後看到&&
。
機器也能這樣工作嗎?
我想用break
但爲什麼人們說break
不if語句工作在:
if(!Util.isReadyToUse(firstName)){
isOK=false;
break;
}
else if(isOK && !Util.isReadyToUse(lastName)){
isOK=false;
break;
}......
什麼是在這種情況下,最好的解決辦法?
您的程序不會執行您的第一條語句'假設它返回(isOK = false)。接下來,程序將檢查ISOK &&!Util.isReadyToUse(lastName的)'因爲你有一個else – RamonBoza
號在Java''&&是短路操作。見http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html – iamnotmaynard
之初ISOK = true,所以它會檢查 – Tum