A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 侯茂绵 中级黑马   /  2012-7-15 01:02  /  2005 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 侯茂绵 于 2012-7-16 14:54 编辑

public static void main(String[] args) {
  
  int x = 4;
  int y = 5;
  if(x++>4 & ++y>5)    //这里的&这个和&&有什么区别    当把&改成&&结果不同
{      
   x++;
  }
  System.out.println("x=" + x + ",y=" + y);
  
}
}


if(x++>4 & ++y>5)    这句话意思是x++>4   y++>5就执行x++
{      
   x++;                           可是结果是x=5 ,y=6   
}                              X=5还能理解  y=6就有点飘忽啦  我还以为是5   y=6说明++y也执行啦 求高手解释下



今天又晚睡啦  。。。。被时间逼得啊!!!有没有同感!!!!

3 个回复

倒序浏览
if(x++>4 & ++y>5)   在这里其实你比较容易混淆。其实你这个if里面的语句x++并没有执行,因为x++>4 & ++y>5的值为false,但是执行了这一个判断后,x的值就已经为5了,y的值也变成了6。你看一下,下面的代码你就会明白了。
{      
   x++;                           
}                        

public class Ittext{
         public static void main(String[] args) {
                  
                   int x = 4;
                   int y = 5;
                   boolean b=x++>4 & ++y>5;
                   if(b)    /*这里的&这个和&&有什么区别   区别是: 当把&改成&&结果不同,其实它们的区别很简单:&代表无论&符号左边的逻辑运算时true,还是false你都要运算&符号右边的逻辑运算;而&&则不同,只要&&符号左边的逻辑运算值为false,那么就不用再运算&&符号右边的值,直接返回false。
                   在实际的这种逻辑运用中一般不会用&运算符,而是使用&&运算符,因为他更为高效。*/

                {      
                    x++;
                   }
                   System.out.println("b="+b);
                   System.out.println("x=" + x + ",y=" + y);
         }
}

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
  1. public static void main(String[] args) {
  2.   
  3.   int x = 4;
  4.   int y = 5;
  5.   if(x++>4 & ++y>5)    //这里的&这个和&&有什么区别    当把&改成&&结果不同
  6.   /*&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个
  7.         运算结果才为true,否则,只要有一方为false,则结果为false。
  8.         &&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式
  9.         */
  10.         // x++>4 false ++y>5 true 此时x = 5 ,y = 6 if中&判断为false
  11. {      
  12.    x++; // 没执行到
  13.   }
  14.   System.out.println("x=" + x + ",y=" + y); //输出x = 5,y = 6
  15.   
  16. }
  17. }
复制代码
回复 使用道具 举报
public static void main(String[] args) {
  
  int x = 4;
  int y = 5;
  if(x++>4 & ++y>5)    //这里执行x>4与y+1>5,比较真假,如果改成&&就是:直接比较x>4结果是false,就不再执行y+1>5了,     
   x++;                            &和&&的区别就是,&的两边都要执行,不管两边的是false还是true。&&先执行前面,当为true时再执行&&后面的,如果&&前面的为false,后面的就不再执行了
  }
  System.out.println("x=" + x + ",y=" + y);
  
}
}

if(x++>4 & ++y>5)    这句话意思是x++>4   y++>5就执行x++
{      
   x++;                           可是结果是x=5 ,y=6   
}                              X=5还能理解  y=6就有点飘忽啦  我还以为是5   y=6说明++y也执行啦 求高手解释下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马