What is the difference between & and && in Java?

前端 未结 13 2714
感情败类
感情败类 2020-11-22 10:33

I always thought that && operator in Java is used for verifying whether both its boolean operands are true, and the & oper

13条回答
  •  误落风尘
    2020-11-22 11:15

    I think my answer can be more understandable:

    There are two differences between & and &&.

    If they use as logical AND

    & and && can be logical AND, when the & or && left and right expression result all is true, the whole operation result can be true.

    when & and && as logical AND, there is a difference:

    when use && as logical AND, if the left expression result is false, the right expression will not execute.

    Take the example :

    String str = null;
    
    if(str!=null && !str.equals("")){  // the right expression will not execute
    
    }
    

    If using &:

    String str = null;
    
    if(str!=null & !str.equals("")){  // the right expression will execute, and throw the NullPointerException 
    
    }
    

    An other more example:

    int x = 0;
    int y = 2;
    if(x==0 & ++y>2){
        System.out.print(“y=”+y);  // print is: y=3
    }
    

    int x = 0;
    int y = 2;
    if(x==0 && ++y>2){
        System.out.print(“y=”+y);  // print is: y=2
    }
    

    & can be used as bit operator

    & can be used as Bitwise AND operator, && can not.

    The bitwise AND " &" operator produces 1 if and only if both of the bits in its operands are 1. However, if both of the bits are 0 or both of the bits are different then this operator produces 0. To be more precise bitwise AND " &" operator returns 1 if any of the two bits is 1 and it returns 0 if any of the bits is 0. 

    From the wiki page:

    http://www.roseindia.net/java/master-java/java-bitwise-and.shtml

提交回复
热议问题