int x=100;
int y=200;
System.out.println(x+(x=y));
System.out.println(x);
求输出结果

解决方案 »

  1.   


    小弟想不明白   为什么(x=y)附完值之后x=200;那x+(x=y)应该是200+200啊  为什么是100+200???
      

  2.   

    int x=100;
    int y=200;
    System.out.println(x+(x=y));// 第一个x是100 还没有被赋值 第二个x被赋值了  
    System.out.println(x);// 这个X 是已经被赋过值的了
    300 200
      

  3.   

    在 System.out.println(x+(x=y));这一句中首先程序执行的是第一个x,此时的x的值是100,程序继续向后运行,当运行到(x=y)时,对x进行赋值,那么x的值为200,但是前x的值已经是100存在内存中不会改变了,所以是100+200=300,不知道我说说的对不对,向各位大虾讨教
      

  4.   

    第1个是100+200=300
    第2个是200
    第一个先执行第一个x,此时x是100,然后x=y把y的值200赋给了x,x就成了200.
      

  5.   

    看下Java 变量申明的真正意义吧! 变量名 只是 内存地址的一个名称而已
      

  6.   

    你应该研究一下,算数运算在java中的执行流程
      

  7.   

    javap看下压栈过程就一目了然了
      

  8.   


    第一个:在执行(x=y)前x=100,而(x=y)返回300,所以结果为300
    第二个:x已经是200,所以结果为200
      

  9.   

    我测试过了100+200
    你可以写成0+(x=y)这样可以测出+右边的值是两百
    实际上,“+”在运算的时候是先放入临时变量中的,先把左x的100放入左临时变量中。然后在运算右边为200,放入右临时变量中。然后拿左右临时变量中的值去算的。100+200
      

  10.   

    int x=100;
    int y=200;
    System.out.println(x+(x=y)); //这句的执行流程是:自左向右执行,即先是100+(x=y),其次100+(x=200),最后 100+200;输出300;x值变为200
    System.out.println(x); //输出200
      

  11.   

    int x=100;
    int y=200;
    System.out.println(x+(x=y)); //这句的执行流程是:自左向右执行,即先是100+(x=y),其次100+(x=200),最后 100+200;输出300;x值变为200
    System.out.println(x); //输出200