मुझे लगता है कि मेरा उत्तर अधिक समझने योग्य हो सकता है:
के बीच दो अंतर हैं &
और &&
।
यदि वे तार्किक और के रूप में उपयोग करते हैं
&
और &&
तार्किक हो सकता है 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
}
और बिट ऑपरेटर के रूप में इस्तेमाल किया जा सकता है
&
Bitwise AND
ऑपरेटर के रूप में इस्तेमाल किया जा सकता है , &&
नहीं।
बिटवाइज़ और "&" ऑपरेटर 1 उत्पन्न करता है और यदि उसके दोनों बिट्स केवल तभी काम करते हैं तो 1. हालांकि, यदि दोनों बिट्स 0 हैं या दोनों बिट्स अलग-अलग हैं तो यह ऑपरेटर 0. पैदा करता है। अधिक सटीक बिटवाइज़ होने के लिए और "&" ऑपरेटर 1 लौटाता है यदि दो बिट्स में से कोई 1 है और यह 0 रिटर्न है यदि कोई बिट्स 0 है।
विकी पेज से:
http://www.roseindia.net/java/master-java/java-bitwise-and.shtml