位运算符和逻辑运算符的区别看概念就看的我头大了,本来还有一点明白的,但是看了一个程序之后就彻底糊涂了啊,帮忙指明一下哈!
class Example
{public static void main(String args[])
 {int x,y=10;
  if(((x=0)==0‖((y=20)==20))
    {System.out.println("现在的y:"+y);}
 {int a,b=10;
  if(((a=0)==0︱((b=20)==20))
    {System.out.println("现在的b:"+b);}
}
}

解决方案 »

  1.   

    位运算符         描述
      &             与
      |             或
      ^             异或
      ~             非
    逻辑运算符       描述
      &&            与
      ||            或
      
      

  2.   

    在这个例子“||”与“|”应该是属于布尔逻辑运算符吧。“|”为逻辑或,“||”为短路或。区别就是“A||B”中,如果A为真,那么不管B为真假,结果都为真。而“A|B”中,无论A怎样,都要运行B。在JAVA短路版本中,如果一个运算数就能觉得表达式的值,就不会对第二个运算数求值。
      

  3.   


    怎么不行先把20给y==20返回true
      

  4.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【houjiaoer】截止到2008-07-08 13:20:08的历史汇总数据(不包括此帖):
    发帖的总数量:7                        发帖的总分数:130                      每贴平均分数:18                       
    回帖的总数量:1                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:3                        结贴的总分数:50                       
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:4                        未结的总分数:80                       
    结贴的百分比:42.86 %               结分的百分比:38.46 %                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    楼主该结一些帖子了
      

  5.   

    class Test01 { public static void main(String[] args) {
    int x, y = 10;
    if ((x = 0) == 0 || ((y = 20) == 20)) {//(x = 0) == 0为真,所以不执行((y = 20) == 20),直接跳到下一句输出;所以y还等于10
    System.out.println("现在的y:" + y);
    }
    {
    int a, b = 10;
    if ((a = 0) == 0 | ((b = 20) == 20)) {//(a = 0) == 0 为真,(b = 20) == 20为真,真与真做逻辑或为真,所以做下一句;所以b=20
    System.out.println("现在的b:" + b);
    }
    }
    }
    }
      

  6.   

    其实关键就一点,逻辑或运算符,只有当前的判断结果为true才会继续判断
    比如“A || B || C”,如果A为true,将不会继续判断B、C是否为true,因为结果已经确定为true了;同理,如果A为false,则会继续判断B,如B为true,则C不再判断。而“|”为位或运算,不会有类似的性质
      

  7.   

    if(((x=0)==0‖((y=20)==20)) 
        {System.out.println("现在的y:"+y);} 
    这里为短路或,由于x=0这个表达式值为0,0==0为真,于是((y=20)==20)没有运算,于是y=10
      

  8.   

    位运算符        描述 
      &            与 
      ¦            或 
      ^            异或 
      ~            非 
    逻辑运算符      描述 
      &&            与 
      ¦ ¦            或 
      

  9.   

    ||是短路或。
    a||b,a如果为true,则b不做运算。
      

  10.   

    楼上的正解
    ||举个例子,true || false时,当程序运行到true时就不检测||的条件,并认为这段话是真
    而|则会继续检测|后的条件
      

  11.   


    class Test1 {    public static void main(String[] args) {
            int x, y = 10;
            if ((x = 0) == 0 || ((y = 20) == 20)) {//(x = 0) == 0为真,所以不执行((y = 20) == 20),直接跳到下一句输出;所以y还等于10
                System.out.println("现在的y:" + y);
            }
            {
                int a, b = 10;
                if ((a = 0) == 0 | ((b = 20) == 20)) {//(a = 0) == 0 为真,(b = 20) == 20为真,真与真做逻辑或为真,所以做下一句;所以b=20
                    System.out.println("现在的b:" + b);
                }
            }
        }
    }
      

  12.   


    while(true){
      System.out.println("md都说完了。");
    }