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

© 张海洋 中级黑马   /  2013-3-22 18:27  /  2319 人查看  /  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);        

评分

参与人数 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

查看全部评分

回复 使用道具 举报
楼主可以尝试运行一下,看看效果,然后针对相应的问题,进行提问,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马