ความแตกต่างระหว่าง Java & และ &&: & เป็นทั้งตัวดำเนินการบิตและตัวดำเนินการเชิงตรรกะ ทั้งสองด้านของ & สามารถเป็น int หรือ boolean expressions เมื่อทั้งสองด้านของ & เป็น int ตัวเลขทั้งสองด้านของผู้ประกอบการจะต้องถูกแปลงเป็นตัวเลขไบนารีก่อนที่จะดำเนินการ ทั้งสองด้านของลัดวงจรและ (&&) จะต้องเป็นนิพจน์บูลีน
ฉันคิดว่าหลายคนจะพบมันเมื่อเรียนรู้ Java หรือระหว่างการสัมภาษณ์
&และ&&
อย่างไรก็ตามหากคุณไม่เข้าใจสิ่งที่พวกเขาหมายถึงมันจะทำให้เกิดปัญหามากมายในการคิดของคุณ
ในบล็อกนี้หลังจากอ่านเสร็จแล้วคุณจะพบว่ามันง่ายที่จะแยกแยะพวกเขา
นี่คือการสาธิตของฉัน
-
-
-
แพ็คเกจ com.b510.test;
-
* @author Jone Hongten
* @Create Date: 2013-11-2
* @version 1.0
-
การทดสอบระดับสาธารณะ {
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
string str = null;
ถ้า (str! = null &&! "". เท่ากับ (str)) {
// ทำอะไรบางอย่าง
-
ถ้า (str! = null &! "". เท่ากับ (str)) {
// ทำอะไรบางอย่าง
-
-
-
ตอนนี้เราอาจเบลอดังนั้นลองมาดูปัญหาวงจรของ & & &&:
สำหรับ:&&
ถ้า (str! = null &&! "". เท่ากับ (str))
เมื่อ: str! = null การดำเนินการต่อไปนี้จะดำเนินการ:! "". เท่ากับ (str)
ถ้า: str! = null เป็นเท็จแล้วในเวลานี้โปรแกรมอยู่ในวงจรลัดวงจรแล้ว! "". เท่ากับ (str) จะไม่ถูกดำเนินการ
แต่สำหรับ: &
ถ้า (str! = null &! "". เท่ากับ (str))
โดยไม่คำนึงถึงผลของ str! = null (เช่นจริง, เท็จ), โปรแกรมจะดำเนินการ:! "". เท่ากัน (str)
สรุปปัญหาวงจร:
สำหรับ: & -> ไม่ว่าจะมีอะไรก็ตามโปรแกรมทางด้านซ้ายและด้านขวาของสัญลักษณ์ "&" จะถูกดำเนินการ
สำหรับ: && -> โปรแกรมทางด้านขวาของสัญลักษณ์ "&&" จะถูกดำเนินการเฉพาะในกรณีที่โปรแกรมทางด้านซ้ายของสัญลักษณ์ "&&" เป็นจริง (จริง)
พูดคุยเกี่ยวกับกฎการดำเนินการด้านล่าง:
สำหรับ: & -> ตราบใดที่ด้านซ้ายและด้านขวาเป็นเท็จมันเป็นเท็จ เฉพาะเมื่อทั้งหมดเป็นจริงผลลัพธ์จะเป็นจริง
สำหรับ: && -> ตราบใดที่ด้านซ้ายของสัญลักษณ์เป็นเท็จผลลัพธ์เป็นเท็จ เมื่อด้านซ้ายเป็นจริงและด้านขวาเป็นจริงผลลัพธ์จะเป็นจริง
ขอบคุณสำหรับการอ่านฉันหวังว่ามันจะช่วยคุณได้ ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!