第一题 
int x = 1,y = 1; 
//++后缀式  先取值在自加  前缀式 先自加在比较 
if(x++==2 & ++y==2) {  //&它会将整个式子计算后在者到结果  x =7; 

System.out.println("x="+x+",y="+y);  x=2 y=2 --------------------------------------------------- 第二题 
int x = 1,y = 1; 
//&& 如果可以通过第一个表达式确定整个式子结果,后面式子就不会在运算。 if(x++==2 && ++y==2) { 
 x =7; } 
System.out.println("x="+x+",y="+y);  x=2 y=1 ---------------------------------------------------  
第三题 
int x = 1,y = 1;  
if(x++==1 | ++y==1) {  
x =7; 

System.out.println("x="+x+",y="+y);  x=7 y=2 ---------------------------------------------------  
第四题 int x = 1,y = 1;  
if(x++==1 || ++y==1) {  
x =7; 

System.out.println("x="+x+",y="+y);  x=7 y=1

解决方案 »

  1.   

    x++在运行之后x+1,该值返回的是x
    ++x在运行之之前x+1,该值返回的是x+1
      

  2.   

    &&,||
    这两个运算符,在if判读里面,如果第一个表达式成立,就不用操作第二个表达式了,例如第二题:
    if(x++==2 && ++y==2),这里是与的关系,先判读第一个x++=2不成立,与的关系只要一个不成立,整个if表达式就不成立,所有不会再执行第二个表达式,也就是++y=2了。第四题,if(x++==1 || ++y==1)这里是或的关系,先判读第一个x++=1成立,或的关系里,只要有一个成立,真个if表达式就成立,所有不用再判读执行第二个表达式,也就是++y=1了&,|
    而这两个运算符判读的时候,不管第一个表达式能不能确定最终结果,都会执行第二个表达式,例如第一题,
    if(x++==2 & ++y==2),首先x++=2,这里不成立,但执行玩只后x变成了2,再执行第二个表达式,++y=2,y先加1变成2,在判读,这个是成立的,但是由于第一个不成立,这里是与的关系,所有整个if不成立,不会执行花括号里面的x=7,所有最终结果是x=2,y=2剩下的楼主自己分析下吧,好难描述的。