区别

  1. || 为逻辑运算符,而 | 为位运算符。

      位运算可以进行进行int数的或运算。
      例:4|1=5
      4写作二进制数 1 0 0
      1写作二进制数 0 0 1
      做或运算得出  1 0 1   即5
    
  2. || 只要满足第一个条件,后面的条件就不再判断,而 | 要对所有的条件进行判断。

    我们定义一个链表

    class ListNode {
        int val;
        ListNode next;
        ListNode(int x) { val = x; }
    }
    
    ListNode a=null;
    

    写出一个if判断语句,共四种写法

    if(a==null|a.next==null)//1
    if(a==null||a.next==null)//2
    if(a.next==null|a==null)//3
    if(a.next==null||a==null)//4
    

    以上四种写法中,1、3、4写法均会抛出NullPointerException异常
    1. | 要对所有的条件进行判断,故在a.next == null的判断中抛出异常
    2. || 只要满足第一个条件,后面的条件就不再判断,a==null满足,返回true
    3. 同1的错误
    4. 判断前一个条件,a.next抛出异常

    以上为||和|的区别和使用,相同&和&&也可以同上思考

更多推荐

java中|和||的使用和区别