Java มีตัวดำเนินการบูลีนที่น่าสนใจสองตัวที่ไม่พบในภาษาคอมพิวเตอร์อื่น ๆ ส่วนใหญ่ เหล่านี้รุ่นที่สองของ AND และ OR เป็นที่รู้จักในฐานะผู้ประกอบการตรรกะลัดวงจร ดังที่คุณเห็นจากตารางก่อนหน้าตัวดำเนินการ OR จะให้ผลลัพธ์เป็นจริงเมื่อ A เป็นจริงไม่ว่า B จะเป็นอย่างไร
ในทำนองเดียวกันตัวดำเนินการ AND จะให้ผลลัพธ์เป็นเท็จเมื่อ A เป็นเท็จไม่ว่า B จะเป็นอย่างไร หากคุณใช้||
และ&&
แบบฟอร์มแทนที่จะใช้|
และ&
รูปแบบของตัวดำเนินการเหล่านี้ Java จะไม่ต้องกังวลกับการประเมินตัวถูกดำเนินการด้านขวาเพียงอย่างเดียว สิ่งนี้มีประโยชน์มากเมื่อตัวถูกดำเนินการด้านขวาขึ้นอยู่กับว่าตัวถูกดำเนินการด้านซ้ายเป็นจริงหรือเท็จเพื่อให้ทำงานได้อย่างถูกต้อง
ตัวอย่างเช่นโค้ดแฟรกเมนต์ต่อไปนี้แสดงวิธีที่คุณสามารถใช้ประโยชน์จากการประเมินลอจิกลัดวงจรเพื่อให้แน่ใจว่าการดำเนินการแบ่งจะถูกต้องก่อนที่จะประเมิน
if ( denom != 0 && num / denom >10)
เนื่องจากมีการใช้รูปแบบลัดวงจรของ AND ( &&
) จึงไม่มีความเสี่ยงที่จะทำให้เกิดข้อยกเว้นรันไทม์จากการหารด้วยศูนย์ หากโค้ดบรรทัดนี้เขียนโดยใช้&
AND เวอร์ชันเดียวทั้งสองด้านจะต้องได้รับการประเมินทำให้เกิดข้อยกเว้นรันไทม์เมื่อdenom
เป็นศูนย์
เป็นแนวทางปฏิบัติมาตรฐานในการใช้รูปแบบการลัดวงจรของ AND และ OR ในกรณีที่เกี่ยวข้องกับตรรกะบูลีนโดยปล่อยให้เวอร์ชันอักขระเดี่ยวโดยเฉพาะสำหรับการดำเนินการระดับบิต อย่างไรก็ตามมีข้อยกเว้นสำหรับกฎนี้ ตัวอย่างเช่นพิจารณาข้อความต่อไปนี้:
if ( c==1 & e++ < 100 ) d = 100;
ที่นี่การใช้ตัวเดียว&
ช่วยให้มั่นใจได้ว่าการดำเนินการเพิ่มจะถูกนำไปใช้e
ว่าc
จะเท่ากับ 1 หรือไม่