While using short circuit opeartor( &&,||) ,if the LHS is true in case of || or if LHS is false in case of && the RHS is not evaluated. while using & and | both sides are evaluated ,so while invoking any method on null ref. would result in null pointer exception. I hope it answers your question.
The '&' operator evaluates both expressions while '&&' is a short circuit evaluator. Here first expression on evaluation gives 'false' and the second would throw an exception. When '&&' is used the first expression makes the result 'false' even without evaluation of the second expression("short-circuited"), but with '&' both sides are evaluated, hence an exception will be thrown.