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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张海洋 中级黑马   /  2013-3-22 18:27  /  1987 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张海洋 于 2013-3-23 19:32 编辑

分析以下程序运行结果:
int x = 1;
int y = 2;
System.out.println(x++ == y & ++x > y++);                 
System.out.println(x);         
System.out.println(y);         

int x = 1;
int y = 2;
System.out.println(x++ == y && ++x > y++);           
System.out.println(x);  
System.out.println(y);  

int x = 1;
int y = 2;
System.out.println(x++ == y | ++x > y++);               
System.out.println(x);  
System.out.println(y);  

int x = 1;
int y = 2;
System.out.println(x++ == y || ++x > y++);               
System.out.println(x);        
System.out.println(y);        

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-23 17:29

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

8 个回复

倒序浏览
本帖最后由 王瑞 于 2013-3-22 19:31 编辑
  1. class  Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int x = 1;
  6.                 int y = 2;
  7.                 System.out.println(x++ == y & ++x > y++);    //false.原因: x++先自判断和y是否相等,再赋值,结果是false。左边false,邮编也是false
  8.            
  9.                 System.out.println(x); //    x的值为3     
  10.                 System.out.println(y);  //y的值为3
  11.         }
  12. }
复制代码
回复 使用道具 举报
剩下的就不一一运算了,有些区别,弄清楚就好办了。
i++是在一个先使用后加1,即先使用i的值,后让i+1
++i则是先加1后使用,即先让i+1后再使用i的新值
&和&&的区别,
&左边无论真假,邮编都会运算
&&左边是假,右边就不运算了。
| 和 || 的区别同上!

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
/*
x++与++x的区别:
                                x++是先给x赋值,再自增1;
                                ++x则相反,先给x自增1,然后自增1后的结果赋给x。
&&与&的区别:
                                & 左边为false,右边仍然运算。
                                &&左边为false,右边不再运算。
||与|的区别:
                                | 左边为true,右边仍然运算。
                                ||左边为true,右边不再运算。
*/
我就拿第一段儿程序为例说明:
                int x = 1;
                int y = 2;
                System.out.println(x++ == y & ++x > y++);//先判断1==2,结果为false,然后x自增1,x=2;接着x自增1,x=3,判断3>2,结果为true,最后y自增1,y=3
                System.out.println(x);         
                System.out.println(y);   

因此,结果依次为:
false
3
3
-------------
false
2
2-------------
true
3
3
-------------
true
3
3        

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
楼主可以尝试运行一下,看看效果,然后针对相应的问题,进行提问,谢谢
回复 使用道具 举报
分析以下程序运行结果:
int x = 1;
int y = 2;
System.out.println(x++ == y & ++x > y++);        // false      先使用x 和y 再进行++运算 而中间用的是AND 后面的就不用看了
System.out.println(x);                                       //3           上面执行了x++ 和 ++x
System.out.println(y);                                       //3           用的是单& 所以也 y++

int x = 1;
int y = 2;
System.out.println(x++ == y && ++x > y++);           // false           跟上个一样 也是先比较 后++
System.out.println(x);                                            // 2                上面已经运算过了 x++
System.out.println(y);                                            //2                 由于用的是双&& 前面的如果是false 那么后面的就不再进行比较

int x = 1;
int y = 2;
System.out.println(x++ == y | ++x > y++);               // ture     这个比较复杂,先是x 跟y 比较  然后x++ x=2, 然后 ++x=3 跟y 比较 然后y++
System.out.println(x);  
System.out.println(y);  

int x = 1;
int y = 2;
System.out.println(x++ == y || ++x > y++);               
System.out.println(x);      
System.out.println(y);      

评分

参与人数 1技术分 +2 收起 理由
黄玉昆 + 2

查看全部评分

回复 使用道具 举报
  int x = 1;
int y = 2;
System.out.println(x++ == y | ++x > y++);               // ture     这个比较复杂,先是x 跟y 比较  然后x++ x=2, 然后 ++x=3 跟y 比较 然后y++
System.out.println(x);                                              //3          上面一共进行了两次++运算
System.out.println(y);                                             // 3           上面只运算了一次y++

int x = 1;
int y = 2;
System.out.println(x++ == y || ++x > y++);              // 这个跟上面的一摸一样 在这里就不再重复了  只是需要注意的是 ||  号是如果前面为真true 那么后面的则         
System.out.println(x);                                                         不在运算!
System.out.println(y);

点评

代码都有注释,不错的习惯,希望能继续保持,加油  发表于 2013-3-23 07:00
回复 使用道具 举报
手一抖第一次没有打完 呵呵  不好意思
回复 使用道具 举报
芦子骐 发表于 2013-3-23 01:38
int x = 1;
int y = 2;
System.out.println(x++ == y | ++x > y++);               // ture     这个比较 ...

呵呵   谢谢~:kiss:
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马