&,按位与
&&,逻辑与
虽然这两个运算符要求两边的值都为 true 整个表达式才为 true;但&&是短路的只要左边的表达式为 false 则整个表达式都为 false 右边的表达式不会执行。很多时候我们都需要&&而不是&,例如在验证用户登录时判定用户名 不为 null 且不为空字符串时,应当写成
username != null && !username.equals(""),二者的顺序不能交换,更不能使用&,因为第一表达式不成立,根本不能进行与空字符串的 equals 比较,否则会产生空指针异常。