黑马程序员技术交流社区

标题: 紧急!!! java 这样写,打印的全是5 不明白?谁能告诉我? [打印本页]

作者: 马云    时间: 2012-3-19 14:54
标题: 紧急!!! java 这样写,打印的全是5 不明白?谁能告诉我?
//java 这样写,打印的全是5 不明白?谁能告诉我
public static void main(String[] args) {
  int x = 5;
  while (true) {
    x = x++;
    System.out.println(x);
  }
}

作者: 盛祖华    时间: 2012-3-19 15:09
先看看while语句的语法结构:
while(条件表达式)
{
      执行语句;
}
当条件表达式返回值为真时,才执行{}中的代码,当执行完{}中的代码后,再检测到条件表达式的返回值,直到返回值为假时终止循环。
此例中,没有条件表达式,没有给定范围,只有一个true,所以只能一直的循环下去!
作者: 李深山    时间: 2012-3-19 15:13

//java 这样写,打印的全是5 不明白?谁能告诉我
public static void main(String[] args) {
  int x = 5;
  while (true) {
    x = x++;//你在这里如果写成x=++x那就一直往上累加
    System.out.println(x);
  }
}
如果写成x=++x那就一直往上累加,而且不会终止。
作者: 攻城狮    时间: 2012-3-19 15:17
本帖最后由 李南江 于 2012-3-19 15:19 编辑

你写的是一个无限循环 重点在于x++赋值问题 无限循环 x++ (++在后赋值给x再自增),故一直是5,
如果你把++放到x前面数值就会变化了(++x 先自增再赋值)。
public static void main(String[] args) {
  int x = 5;
  while (true) {
    x=++x;
    System.out.println(x);
  }
}

首先你要了解运算符的(张老师的JAVA就业培训教程44页)
作者: 周建    时间: 2012-3-19 15:19
x++的意思是用完之后再加1;你写x=x++;等于是每次都把5付给本次的x后;再把上一次的x加1;但输出的还是本次的x,还是5;
你应该把x=x++;改为x++;
作者: 朱鹏举    时间: 2012-3-19 15:26
首先你要把x=x++;改为x++;这样就不一直是5了,会向上累加,然后你求什么,要定义一个为ture的的条件,当x++不在条件之内的话就会停止,否则是一个无限循环。
作者: 王春祥    时间: 2012-3-19 15:28
周建 发表于 2012-3-19 15:19
x++的意思是用完之后再加1;你写x=x++;等于是每次都把5付给本次的x后;再把上一次的x加1;但输出的还是本次 ...

就是这个意思,x=x++,先执行的是赋值操作,可以这样理解 x=x++等价于
temp=x;  x=x+1;   x=temp;
作者: 曾_强    时间: 2012-4-25 14:15
x++与++x.关于运算符的思考。应该注意细节。x++是先赋值给x,x自身再加1;++x是先加1再将这个值赋值给自己。细微的艺术。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2