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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© cs8630323 高级黑马   /  2013-8-1 20:30  /  2093 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨兴庭 于 2013-8-2 10:22 编辑

x=x++,x还是等于0,这个x++完全是没用的吗?我觉得没用,就想确定下

评分

参与人数 1黑马币 +3 收起 理由
杨兴庭 + 3

查看全部评分

9 个回复

倒序浏览
class Demo {
        public static void main(String[] args) {
                int x = 0;
                x = x++;//x没有先加1就把值赋给了前面的x,前面的x的值是0,后面的x++后是1
                System.out.println(x);//此时x打印的是上一行前面x的值
               
        }
}

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
x=x++;
对于本句的理解应该是这样的,等号右边x先对左边赋值为0,然后再自加1为1,但是之后并没有再次赋值给左边,所以左边还是0.
也就是说这句有没有效果是一样的,可以不要
一般.没人会这么写代码,都是y=x++...z=x++等等
另外同一句代码中最好不要对一个变量进行多次赋值,

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
int x = 0;
x = x++;
分解开来,它的执行步骤如下:
    (1)右边的x为0,此时由于自增是在右边,所以将0存储起来,类似于int temp = 0;
    (2)右边的x加1,此时x的值为1;
    (3)现在才开始给左边的x赋值,即 x = temp;
    (4)代码相当于如下:
        int x = 0;
        int temp = x;//因为自增在右边。

        x = x + 1;//马上开始自增。

            x = temp;//最后才赋值。

        此时打印的就是最后x的值,即0.

因为x++是一次运算,优先于赋值完成,所以会导致上述结果。你可以用这种方法测试,结果都符合此规律。

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
int x=0,y=0,z=0;
x=x++;
x++
有用的,亲。。。。。。。。。。。。。。。。
******************************************
x++和++x单独用,结果都是一样的
int x=0;
x=x++;
x++//x=1
++x//x=1
但是y=x++,z=++x,效果不一样

y=x++//是先将x现在的值赋给y,x在自己加1,如果后面有输出语句System.out.println(y);在屏幕上输出的是y的值是1;
z=++x//是先将x自加1,再将x自加1后的值赋给z,如果后面有输出语句System.out.println(z);在屏幕上输出的是y的值是2;

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
遇到++x时  x先加一  再执行
遇到x++时  x的值不变,执行完当前操作后,x的值再加一
回复 使用道具 举报
我感觉楼上所说是有问题的
x=x++;是无意义的 不能实现x的自加一,而y=x++;是可以实现y的赋值和x的自加一的
验证代码如下:
  1. public class Test {
  2.         public static void main(String[] args)
  3.         {
  4.                 Demo.run1();
  5.   //              Demo.run2();
  6.         }
  7. }
  8. class Demo
  9. {
  10.         public static  void run1()
  11.         {
  12.                 int x = 0;
  13.                 int y;
  14.                 y=x++;
  15.                 System.out.println("y="+y+"----x="+x);
  16.         }
  17.         public static  void run2()
  18.         {
  19.                 int x = 0;
  20.                 while(x<2)
  21.                 {
  22.                         x=x++;
  23.                         System.out.println(x);
  24.                 }
  25.                 System.out.println("over");
  26.         }
  27. }
复制代码
run1()运行结果:y=0----x=1
运行run2()方法时 程序进入死循环,说明x没实现自加的功能


希望能帮到你  共同学习哈

评分

参与人数 1技术分 +2 收起 理由
杨兴庭 + 2 赞一个!

查看全部评分

回复 使用道具 举报
yan 中级黑马 2013-8-2 10:37:28
8#
你应该是没理解 x++ 和 ++x 的意思,x++的意思是先引用当前值,然后自身自增1,而++x的意思是先自增1,然后值被引用 给你写个程序吧
第一个程序:
class Example{
public static void main(String [] args)
{
  int x=0;
int y=x++;
System.out.println(y);
}
}
--------------------------------------------------------
第二个程序:
class Example
{
public static void main(String [] args)
{
int x=0;
int y=++x;
System.out.println(y);
}
}
第一个程序输出的值是0,第二个程序输出的值是1
不知道这么说你能不能懂,希望能帮助到你
回复 使用道具 举报
  1. class Demo{
  2.         public static void main(String[] args) {
  3.                 int x=0;
  4.                 x++;
  5.                 System.out.println("x="+x);
  6.                 int y=0;
  7.                 ++y;
  8.                 System.out.println("y="+y);
  9.                 int i=0;
  10.                 System.out.println(i++);
  11.                 int j=0;
  12.                 System.out.println(++j);
  13.                
  14.         }
  15. }
复制代码
x++和++x 单独使用的时候是没有区别的 最后输出的结果都是自己自增1的结果
而如果和输出语句一起 x++ 先输出x的值 然后才会增1 而++x先自增1再输出  这就是区别
So ++ 和--  还是有用的 多用在循环中 用来给变量不断自增 自减
回复 使用道具 举报
补充一下 运行结果为:
x=1
y=1
0
1
根据程序运行的结果 可以更容易理解一些
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马