&和&&有什么区别?

&运算符有两种用法:短路与运算和逻辑与运算。

&&运算符是短路与运算符。它与逻辑与运算符的区别非常重要,尽管两者都要求运算符左右两边的布尔值都为true,才会得到true作为整个表达式的结果。

&&被称为短路运算符,是因为如果左边的表达式的值为false,右边的表达式将会被直接短路,不进行运算。在许多情况下,我们应该使用&&而不是&。

例如,在验证用户登录时,要判断用户名不为null且不为空字符串,应该写为username != null && !username.equals("")。两个条件的顺序不能颠倒,更不能使用&运算符,因为如果第一个条件不成立,就不应进行字符串的equals比较,否则可能会引发NullPointerException异常。

需要注意的是,逻辑或运算符(|)和短路或运算符(||)的区别也是如此。

标签: java, Java面试题, Java问题合集, Java编程, Java问题精选, Java常见问题