私の答えはより理解しやすいと思います:
とには2つの違いが &
あり&&
ます。
論理ANDとして使用する場合
&
そして、&&
論理的なことができAND
たとき、&
または&&
左と右の式の結果がすべて真で、全体の演算結果が真であることができます。
いつ&
、&&
論理的にAND
、違いがあります:
&&
論理として使用する場合AND
場合、左の式の結果がfalseの場合、右の式は実行されません。
例を見てみましょう:
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
演算子 として使用できますが、使用&&
できません。
ビットごとのAND "&"演算子は、オペランドの両方のビットが1の場合にのみ1を生成します。ただし、両方のビットが0であるか、両方のビットが異なる場合、この演算子は0を生成します。より正確にビットごとにAND "&"演算子は、2つのビットのいずれかが1の場合は1を返し、いずれかのビットが0の場合は0を返します。
wikiページから:
http://www.roseindia.net/java/master-java/java-bitwise-and.shtml