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 ANDoperator 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