der Unterschied ist, daß bei && und checkA==false -> checkB nicht ausgeführt wird. (condition bricht ab)

Bei & werden beide ausgeführt.

Das kann zu Komplikationen führen wenn zB sowas macht

if (person!=null && person.alter>17) ->OK
if (person!=null & person.alter>17) -> Nullpointer Exception