日期:2014-05-20  浏览次数:20637 次

刚刚开始学,遇到几个小问题...
class   Example3_2
{
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,int   x,声明了一个整型变量x,但是没有对它进行初始化,在使用的时候是默认为0吗?
2,if(((x=0)==0)||((y=20)==20))   这句话该怎样去理解,具体运行的流程是什么?拿y来说,(y=20)==20,这句话是什么意思?
3,课本上说位运算符在操作逻辑型数据时,与逻辑运算符不同的是,位运算符要计算完a,b之后再给出运算结果-----这句话是指在运行(b=20)==20时对b进行了赋值处理,然后再判断b是不是等于20,最后进行位运算吗?
刚开始学,想把基础打好,所以就抓住书上的每一个例子,搞懂搞透,希望大家多多给予帮助.谢谢...

------解决方案--------------------
快下班了,我简略的说吧, "|| "判断,如果前面的条件就已经满足的话不会检查它后面的条件是不是满足(也就是不执行它后面的那句话),而 "| "是无论如何都要判断完它两边的条件是不是都满足才结束判断.
------解决方案--------------------
补充:if(((x=0)==0)||((y=20)==20))如果(x=0)==0)为真则((y=20)==20))不执行
------解决方案--------------------
这是个短路语句。嘿嘿
------解决方案--------------------
因为(x=0)==0)为真,||为逻辑或,所以||后面的就不用判断了,此时Y仍然为10即初始值,|为与运算后面的表达式仍然需要判断,此时Y已经赋值为20,
所以输出10
    20