区别与用法 

解决方案 »

  1.   

    &是位与
    &&是逻辑与
    |是位或
    ||是逻辑或int i = 3;
    int j = 5;
    i 在内存中为 前面的0 0011
    j 在内存中为 前面的0 0101
    &的结果为    前面的0 0001  //这个位上必须都是1才是1
    |的结果为    前面的0 0111  //这个位上有一个是1就是1
      

  2.   

    补充一楼的在 & 和 | 两边是布尔类型时充当。&:布尔逻辑与
    |:布尔逻辑或布尔逻辑与(&)、布尔逻辑或(|)与逻辑与(&&)、逻辑或(||)的区别是前者为非短路运算符,后者为短路运算符。具体的区别可以看看:http://topic.csdn.net/u/20080130/17/7fdd8b93-bdd6-467a-863e-fc3c9731bc52.html第一个问题和 20、54、72 楼的回复。
      

  3.   

    只是张的象
    &&  ||   要求前后都是boolean
      

  4.   


    学到东西了,我还一直认为boolean可以既用&(|)也用&&(||)
      

  5.   

    其实没必要说那么复杂啊,只要知道其区别就可以了比如&与&&java中的&相当C语言的&&,就是在运算的时候 比如int x = 3;
    int y = 4;
    int z = 5;
    if(x>y&y<z)
    {
       .......
    }
    当x>y不成立时,上例还需要继续判断y<z是否成立,也就是非短路版本
    而当把&换成&&后,当左边为false时,则不需要再计算右边是否为true,这个时“短路与”同理 | 都需要计算左右两边的值,而 || 只要左边表达式为true时,则不需要计算右边的表达式两者只存在效率区别,在应用方面应该是都可以的