&(按位与)和&&(逻辑与)的区别如下:
1.&&具有短路功能,而&不具有短路功能。
2.
当&运算符两侧的表达式的结果均为真时,整个运算结果才为真。
当&&操作符第一个表达式为 false时,结果为 false,并且不再计算第二个表达式。
(简单的表达就是:使用&运算符,必须两侧的都是true,结果为真。使用&&运算符,重点看第一个表达式,第一个表达式为false,后面的表达式就不会再计算(因为具有短路功能),如果第一个表达式是true,后面就会继续进行计算,直到后面全部都为true,才为真。)
为了让大家更好的理解,请看下面代码:
这里引入一下变量的命名规范!!!
变量的名字可大小写混用,但首字符应小写。词由大写字母分隔,限制用下划线,限制使用美元符($),因为这个字符对内部类有特殊的含义。示例如:resultOne 。
boolean resultOne = 1==3 & 1==1 & 2==2; //使用 &
boolean resultTwo = 1==3 && 1==1 && 2==2; //使用 &&
System.out.println(resultOne); //resultOne = false
System.out.println(resultTwo); //resultTwo = false
//当使用 & 时,要进行 1==3 & 1==1 & 2==2 的判断
//当使用 && 时,因为 1==3 为 false,所以进行了短路的操作,后面的1==1 && 2==2 不用执行。
在很多时候我们都用到&&而不用&,例如在验证用户登录时进行时进行的判断,用户名不为空(null)也不是空字符串,代码应该写成:文章来源:https://www.toymoban.com/news/detail-425342.html
userName != null && !userName.equals("");
//这里不能使用 & 运算符,顺序也不能交换,如果用户名真的为空的情况下,会报空指针异常(NullPointerException)。
userName.equals("") 如果userName为null 进行equals操作会报NullPointerException,所以我们要先判断userName不为null,在用equals判断不是空字符串。文章来源地址https://www.toymoban.com/news/detail-425342.html
到了这里,关于&和&&的区别(简单易懂)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!