En Java (et C aussi, il me semble, mais je peux me tromper), le "&" (ou le "|" ) évalue ses DEUX opérandes, et donne un résultat, mais le "&&" (ou le "||" ) commence par évaluer le premier opérande, et n'évalue le second que si nécessaire....
pratique, non??