&和&&有什么区别?

&和&&有什么区别?
&运算符有两种用法:短路与运算和逻辑与运算。
&&运算符是短路与运算符。它与逻辑与运算符的区别非常重要,尽管两者都要求运算符左右两边的布尔值都为true,才会得到true作为整个表达式的结果。
&&被称为短路运算符,是因为如果左边的表达式的值为false,右边的表达式将会被直接短路,不进行运算。在许多情况下,我们应该使用&&而不是&。
例如,在验证用户登录时,要判断用户名不为null且不为空字符串,应该写为username != null && !username.equals("")
。两个条件的顺序不能颠倒,更不能使用&运算符,因为如果第一个条件不成立,就不应进行字符串的equals比较,否则可能会引发NullPointerException异常。
需要注意的是,逻辑或运算符(|)和短路或运算符(||)的区别也是如此。