Java 中的短路:解釋與範例
在程式設計中,短路是一個很有價值的特性,可以讓表達式的求值提前終止當其結果顯而易見時。此行為在 Java 中具有重大影響,其中表達式涉及 || 等運算子。 (邏輯“或”)和&&(邏輯“與”)表現出此屬性。
在 || 內表達式中,如果第一個運算元的計算結果為 true,則其餘運算元永遠不會被處理。同樣,在 && 表達式中,如果第一個操作數的計算結果為 false,則會繞過其餘操作數。
例如,考慮:
if (a == b || c == d || e == f) {
// ...
}
如果 a == b 傳回 true,則跳過後續的 c == d 和 e == f 計算,因為整個表達式已經產生了 true 結果。
在處理副作用時,短路變得很明顯。表達式中:
if (foo() || bar() || baz()) {
// ...
}
如果 foo() 傳回 true,則 bar() 和 baz() 都不會被執行,從而防止它們可能帶來任何潛在的副作用。
短路的另一個有用的應用是處理物件參考:
if (a != null && a.getFoo() != 42) {
// ...
}
在沒有短路的情況下,如果 a 為 null,a.getFoo() 會引發 NullPointerException。然而,由於 a != null 必須先計算為 true,因此當 a 為 null 時會避免異常,從而確保安全。
需要注意的是,並非所有運算子都支援短路。 | 的 | (位元 OR)和 & (位元 AND)運算子以及大多數其他數學運算子不會表現出這種行為。因此,使用 ||和&&在尋找短路效應時要小心。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3