N多的网站都会有这样的帖子:Java面试题(http://www.ffboy.com/Article/cxsj/java/200507/4285.html),其中就有这个问题。给出的答案也都是一致的:&是位运算符。&&是布尔逻辑运算符。其实这只并不完全正确,&既是位运算符也是逻辑运算符,&&只是逻辑运算符,&与&&同时作为逻辑运算符时&&是短路的,而&并不短路。

解决方案 »

  1.   

    举个例子来说吧
    if((10/2) &&(10/0) )
    {
      System.Out.println("true");
    }
    else
    {
      System.out.println("false");
    }
    是没有错的.而且只输出"false"
    如果把 && 改成 & .就会抛出一个异常
      

  2.   

    xiaoyuepk(魔囝の悦) 的代码能编译?
    JAVA中, 数字是不能参与逻辑运算的, 也不能做if等的条件.总之, 在JAVA中, 只有逻辑运算符才有"短路"功能.&应该和|,^,~这几个划为一类, 都是位运算符, 怎么可能是逻辑运算符?
    只不过它们也可以对boolean进行运算罢了.
      

  3.   

    经过验证,上面xiaoyuepk(魔囝の悦) 的代码是不能通过编译的~~~A.java:7: 演算子 && は int,int に適用できません。
            if((10/2) &&(10/0))
                      ^
    エラー 1 個
      

  4.   

    同意 Dan1980(也该有一些作为了) 说的.
      

  5.   

    class Op 
    {
    public static void main(String[] args) 
    {
    if((10/2)&(10/0) )
    {
      System.out.println("true");
    }
    else
    {
      System.out.println("false");
    }
    }
    }
    报错:Op.java:5: 互換性のない型
    検出値  : int
    期待値  : boolean
                    if((10/2)&(10/0) )
                             ^
    エラー 1 個class Op 
    {
    public static void main(String[] args) 
    {
    if((10/2)&&(10/0) )
    {
      System.out.println("true");
    }
    else
    {
      System.out.println("false");
    }
    }
    }Op.java:5:演算子 && は int,int に適用できません。
            if((10/2) &&(10/0))
                      ^
    エラー 1 個