ฉันคิดว่าคำตอบของฉันสามารถเข้าใจได้มากขึ้น:
มีสองความแตกต่างระหว่างมี และ&&&
หากพวกเขาใช้เป็นตรรกะและ
&และ&&อาจเป็นตรรกะANDเมื่อผลลัพธ์การแสดงออกทางซ้าย&หรือ&&ขวาทั้งหมดเป็นจริงผลการดำเนินงานทั้งหมดอาจเป็นจริง
เมื่อใด&และ&&ตามเหตุผลANDจะมีความแตกต่าง:
เมื่อใช้&&เป็นตรรกะANDหากผลลัพธ์การแสดงออกทางซ้ายเป็นเท็จการแสดงออกที่ถูกต้องจะไม่ดำเนินการ
นำตัวอย่าง:
String str = null;
if(str!=null && !str.equals("")){ // the right expression will not execute
}
หากใช้&:
String str = null;
if(str!=null & !str.equals("")){ // the right expression will execute, and throw the NullPointerException
}
อีกตัวอย่างหนึ่ง:
int x = 0;
int y = 2;
if(x==0 & ++y>2){
System.out.print(“y=”+y); // print is: y=3
}
int x = 0;
int y = 2;
if(x==0 && ++y>2){
System.out.print(“y=”+y); // print is: y=2
}
& สามารถใช้เป็นตัวดำเนินการบิตได้
&สามารถใช้เป็นANDตัวดำเนินการ Bitwise &&ไม่ได้
ตัวดำเนินการ bitwise AND "&" จะสร้าง 1 ถ้าหากบิตทั้งสองในตัวถูกดำเนินการเป็น 1 อย่างไรก็ตามถ้าบิตทั้งสองเป็น 0 หรือทั้งสองของบิตนั้นแตกต่างกันตัวดำเนินการนี้จะสร้าง 0 ให้แม่นยำขึ้น AND "&" ตัวดำเนินการส่งคืน 1 ถ้าหนึ่งในสองบิตใด ๆ เป็น 1 และจะส่งกลับ 0 ถ้าบิตใด ๆ เป็น 0
จากหน้า wiki:
http://www.roseindia.net/java/master-java/java-bitwise-and.shtml