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

本帖最后由 黑马杨晨 于 2012-8-25 14:26 编辑
  1. class Demo
  2. {
  3. public static void main(String[] args)
  4. {
  5.   int j = 0;
  6.   for(int i=0;i<100;i++)
  7.    j = j++;
  8.   System.out.println(j);
  9. }
  10. }
复制代码
你认为结果是多少?并把理由或步骤写出来?

评分

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

查看全部评分

11 个回复

倒序浏览
本帖最后由 梁志仲 于 2012-8-25 15:05 编辑

打印0
j = j++;    //这里的运算顺序是:先取了右边j的值存到一个临时变量中,然后对右边的j进行+1;然后将临时变量中的值赋给j。每次存到临时变量中的值都是0

System.out.println(j);

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 刘源 于 2012-8-25 14:56 编辑

class Demo
{
public static void main(String[] args)
{
  int j = 0;
  for(int i=0;i<100;i++)
   j = j++;  
System.out.println(j);
}
}
j = j++;注意这句话你可以这样看,j=j;j++; 表示j=0,然后把0这个值赋予了j,然后j自增。j虽然自增到1但没有把这个1赋值给谁。所以下一次循环的时候 j还是等于0。
j++并不等于j=j+1。只表示j+1。
而且你for循环还没有大括号,
当然打印结果就是1个0。
回复 使用道具 举报
结果永远是零,
原因是j在外面赋值为零,在进入循环之后,由于是先赋值,j=j,所以打印了,下面的循环都是这样,
回复 使用道具 举报
100吧!每循环一次j自增1。
回复 使用道具 举报
受教了!
回复 使用道具 举报
廉伟 中级黑马 2012-8-25 15:49:54
7#
class Demo
{
public static void main(String[] args)
{
  int j = 0;
  for(int i=0;i<100;i++)
   j = j++;
  System.out.println(j);
}
}
不关怎么弄,结果都是0,你的那个 j=j++。他是先取了右边j保存,再对右边的j进行+1;然后将保存中的值赋给j。每次存到临时变量中的值都是0。
回复 使用道具 举报
0  这相等于永远都是j=j=j+1;由于运算符等级的问题 只执行j=j这步运算
回复 使用道具 举报
李敬 中级黑马 2012-8-25 17:03:17
9#
本帖最后由 李敬 于 2012-8-25 17:05 编辑

..               

回复 使用道具 举报
本帖最后由 黑马-王言龙 于 2012-8-25 18:13 编辑

结果:0
理由:1、猜的
2、j++在内部有个临时变量存储,理由:猜的。
3、赋值100次都是将0赋给j,理由:由上述推出。

评分

参与人数 1黑马币 +30 收起 理由
田建 + 30 有特点,才够味!

查看全部评分

回复 使用道具 举报
看看能不能看懂图

2P0){VWTUGKW@]82V09}I83.jpg (35.84 KB, 下载次数: 156)

2P0){VWTUGKW@]82V09}I83.jpg
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马