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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Suly 注册黑马   /  2012-3-29 14:13  /  2114 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Suly 于 2012-3-29 14:14 编辑

class Demo
{
      public static void main(String[] args)
      {
           int x = 1;
           int y = 2;
           System.out.println(x++ == y); //此结果为false x=2 y=2 为什么为false?
           System.out.println(x);
           System.out.println(y);
           System.out.println(x++ == y); //此结果为true x=3 y=2 为什么为true?          
                   System.out.println(x);
           System.out.println(y);
      }
}
/*其结果:
false
2
2
true
3
2
*/

11 个回复

正序浏览
class Demo
{
      public static void main(String[] args)
      {
           int x = 1;
           int y = 2;
           System.out.println(x++ == y); // 在此你要记得"++""--""==".   "++"or"--"为前缀,先自增或者自减在赋值  在后面就相反了 ,在这个程序“++”在后面,所以是                       1.y=2所以逻辑运算符“==” 判定为 false.
        System.out.println(x);
           System.out.println(y);
           System.out.println(x++ == y); //在此同样,此时x=2,y=2;执行完后x=3.所以为true.         
                   System.out.println(x);
           System.out.println(y);
      }
}
回复 使用道具 举报
class Demo
{
      public static void main(String[] args)
      {
           int x = 1;
           int y = 2;
           System.out.println(x++ == y); // 在此你要记得"++""--""==".   "++"or"--"为前缀,先自增或者自减在赋值  在后面就像犯了 ,在这个程序“++”在后面,所以是                       1.y=2所以逻辑运算符“==” 判定为 false.
        System.out.println(x);
           System.out.println(y);
           System.out.println(x++ == y); //在此同样,此时x=2,y=2;执行完后x=3.所以为true.         
                   System.out.println(x);
           System.out.println(y);
      }
}
回复 使用道具 举报
兄弟,你理解不对。对于x=1;(x++==y);这里的理解是x==y即为1==2;所以为false;      然后才是x+1.即为2.
所以System.out.println(x);x=2;     System.out.println(y);y==2;        (x++ == y),这里是x==y,即为2==2,即  为true,;         System.out.println(x);然后才是x+1,即为x=3;         System.out.println(y);y=2;
回复 使用道具 举报
class Demo
{
      public static void main(String[] args)
      {
           int x = 1;
           int y = 2;
           System.out.println(x++ == y); // 先执行,也就是判断x==y? 此时x=1,y=2;执行完后x=2。所以为false.
        System.out.println(x);
           System.out.println(y);
           System.out.println(x++ == y); //先执行,此时x=2,y=2;执行完后x=3.所以为true.         
                   System.out.println(x);
           System.out.println(y);
      }
}
回复 使用道具 举报
翟友伟 黑马帝 2012-3-29 16:46:42
8#
x++            先用 后++
++x            先++再用
基础的不能再基础了 朋友
回复 使用道具 举报
欧德林 发表于 2012-3-29 16:24
程序默认的是:先判断== 再做了++ 运算
就是(x++ == y) 先判断X与Y是否相等,然后再X自增

就是(x++ == y) 先判断X与Y是否相等,然后再X自增;
这句理解是正确的。
回复 使用道具 举报
你没有理解运算符++
int x = 1;
           int y = 2;
           System.out.println(x++ == y);     //x++,是先进行计算,然后再加1,比较的时候,x还是1;自然不想等了,输出之后x才加1;
       System.out.println(x);     //此时x=2;
           System.out.println(y);
           System.out.println(x++ == y); //此时运算时,x=2;结果自然是true;输出之后x=3;

记住一点,x++,是当前运算结束后再加1,++x,是先加1后再进行运算。
回复 使用道具 举报
程序默认的是:先判断== 再做了++ 运算
就是(x++ == y) 先判断X与Y是否相等,然后再X自增

运算的优先关系 不是先算术 运算再逻辑运算啊?请楼下的大神 解释。。
回复 使用道具 举报
此问题要注意X++跟++X的区别,X ++是先做运算后,再加1
即x++ == y可分解为:x==y,   x=x+1
回复 使用道具 举报
class Demo
{
      public static void main(String[] args)
      {
           int x = 1;
           int y = 2;
           System.out.println(x++ == y); //此结果为false x=2 y=2 为什么为false?/*这个 x++,x的值变成了2了 */
           System.out.println(x);
           System.out.println(y);
           System.out.println(x++ == y); //此结果为true x=3 y=2 为什么为true?          /*i++,赋完再加,也就是说 先判断相等再相加,运算顺序是先判断完之后x++*/
                   System.out.println(x);
           System.out.println(y);
      }
}
回复 使用道具 举报
X++ 是先使用再做加1的操作,X的初始值为1,所以使用的时候是1,当第二次输出X时,X值就变为2
++X 是先做加1操作再使用
System.out.println(++x == y);   为:true
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马