Java中&和&&的区别

&

&运算符有两种用法:(1)按位与;(2)逻辑与。

&&

&&运算符是短路与运算。如果&&左边的表达式的值是false,右边的表达式会被直接短路掉,不会进行运算。
很多时候我们可能都需要用&&而不是&,

例1

int i = 0;
    if(i == 3  && ++i > 0 ){
    }
    System.out.println("i = " + i);

    int j = 0;
    if(j == 3  & ++j > 0 ){
    }
    System.out.println("j = " + j);

输出:
i = 0
j = 1

这是因为&后面的语句执行了,而&&后面的语句没有执行

例2

来源:https://www.cnblogs.com/hongten/p/hongten_java_yu.html

在验证用户登录时判定用户名不是null而且不是空字符串,应当写为:username != null &&!username.equals(""),二者的顺序不能交换,更不能用&运算符,因为第一个条件如果不成立,根本不能进行字符串的equals比较,否则会产生NullPointerException异常。

总结

为什么平时大家都使用的是&&而不是&,我认为是&&出错的可能性更小,而,&容易出错。

posted @ 2020-02-09 21:45  KrisTse  阅读(3103)  评论(0编辑  收藏  举报