Saya pikir jawaban saya bisa lebih dimengerti:
Ada dua perbedaan antara &
dan &&
.
Jika mereka menggunakan AND
&
dan &&
bisa logis AND
, ketika &
atau &&
kiri dan ungkapan yang tepat menghasilkan semua benar, hasil operasi seluruh bisa benar.
kapan &
dan &&
sebagai logis AND
, ada perbedaan:
saat digunakan &&
sebagai logis AND
, jika hasil ekspresi kiri salah, ekspresi kanan tidak akan dijalankan.
Ambil contoh:
String str = null;
if(str!=null && !str.equals("")){ // the right expression will not execute
}
Jika menggunakan &
:
String str = null;
if(str!=null & !str.equals("")){ // the right expression will execute, and throw the NullPointerException
}
Contoh lainnya:
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
}
& dapat digunakan sebagai operator bit
&
dapat digunakan sebagai AND
operator Bitwise , &&
tidak bisa.
Operator bitwise AND "&" menghasilkan 1 jika dan hanya jika kedua bit dalam operandnya adalah 1. Namun, jika kedua bit tersebut adalah 0 atau kedua bit tersebut berbeda maka operator ini menghasilkan 0. Untuk lebih tepat bitwise DAN "&" operator mengembalikan 1 jika salah satu dari dua bit adalah 1 dan mengembalikan 0 jika salah satu dari bit adalah 0.
Dari halaman wiki:
http://www.roseindia.net/java/master-java/java-bitwise-and.shtml