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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨立考 中级黑马   /  2012-9-24 21:01  /  2437 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int x = 1,y = 1;
if(x++==2 & ++y==2)  {
       x =7;
}
System.out.println("x="+x+",y="+y);

评分

参与人数 1技术分 +1 收起 理由
田建 + 1

查看全部评分

11 个回复

倒序浏览
输出结果是 x=2,y=2
回复 使用道具 举报
结果是:x=2,y=2

评分

参与人数 1技术分 +1 收起 理由
田建 + 1

查看全部评分

回复 使用道具 举报
结果是:x=2,y=2
回复 使用道具 举报
结果是:x=2,y=2
回复 使用道具 举报
没什么好说的,太简单了
x=2,y=2
回复 使用道具 举报
黄佳 中级黑马 2012-9-24 23:30:19
7#
(x++==2 & ++y==2)


  前面半句:    x先做运算然后自增   1==2 结果就是 flase  因为的单 &  所以 虽然整个式子 有flase 了结果已经为 flase了   ,但是 单& 后面的表达式也要做运算 , 所以 y 也自增了

所以 if 条件不成立  里面的表达式 不执行      x 和 y 各做了一次 自增    输出结果为    x=2 , y=2
回复 使用道具 举报
  1. class  Text3
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int x = 1,y = 1;


  6.                 //这里的x先是将x=1的值和2判断,判断结果是false,然后再自加1,x的值是2.
  7.                 //而后面的y是先自加1,这时候值变成了2,在进行"==2"的判断,判断结果true
  8.                 if(x++==2 & ++y==2)//(false&true)结果还是false,所以if中的语句不执行。
  9.                 {
  10.                         x =7;
  11.                 }

  12.                 //在if的条件表达式中运行后,x和y的值都变成了2,所以输出结果是2,2

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

  14.         }
  15. }
复制代码
回复 使用道具 举报
  1. package com.aduvm.practice;

  2. public class IfDemo1 {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args)
  7.                         {        
  8.                 int x = 1,y = 1;
  9.                 if(x++==2 & ++y==2)  {  //首先判断左边1==2?不等于所以左边结果为0,x=2,再判断2==2吗?右边结果为1,y=2
  10.                        x =7;        //由于0&1的值为0即为假,所以if条件语句里的程序不执行
  11.                 }
  12.                 System.out.println("x="+x+",y="+y);   //输出x=2,y=2
  13.    
  14.                         }
  15.                 }
  16.                
复制代码
回复 使用道具 举报
public  class A{
                public static void main(String[] args) {       
                        int x = 1,y = 1;
                        if(x++==2 & ++y==2)  {
//亮点就在于if判断语句中的x++和++y,一个是先赋值后计算,一个是先计算后赋值,if语句执行不了,直接跳过
                               x =7;
                        }
                        System.out.println("x="+x+",y="+y); //x=2,y=2
                }

}
回复 使用道具 举报
(x++==2 & ++y==2) 我感觉拆开来看比较好:(x=x+1==2 & (y=y+1)==2) 所以结果是x=2,y=2
回复 使用道具 举报
chjxs 中级黑马 2012-9-25 21:21:45
12#
这个就是理解
1)  ++i 与 i++ ;
     ---->  ++只是改变自变量,表达式的值与++无关。一个是赋值后i变量自加,另一个是i变量自加后再赋值。
2)  &运算;
     ——> &没短路功能。&&有。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马