求助!新手一枚,求解答~~~

adminjava1 2017-08-08 05:51:11
class A
{
public static void main(String[] args)
{
int x=1;
for (; ; )
{
if (x++==10)
{
break;
}
System.out.println(x);
}

}
}
这个结果为什么是2到10,为什么有10啊?如果换成++x,怎么又没10了?
...全文
549 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Timor_D 2017-09-11
  • 打赏
  • 举报
回复
我觉得你要赶紧去看书了!!!目测是自学的
嶼墕風雲 2017-09-01
  • 打赏
  • 举报
回复
x++先取值运算再自增,++x先自增再取值运算。 把你的代码重构一下:
public static void main(String[] args) 
{	
int x=1;
for (; ; )
{
if (x==10)
{
x+=1;
break;
}
x+=1;
System.out.println(x);
}

}
当x==1时输出是2,一直到x==9输出是10,x==10时打破循环。 如果是++x,重构后的代码如下:
public static void main(String[] args) 
{	
int x=1;
for (; ; )
{
x+=1;
if (x==10)
{
break;
}
System.out.println(x);
}

}
当x==1时输出是2,一直到x==8时输出是9,x==9时打破循环 工作中我只用x++而且仅用于for循环的自增或者单独一行代替x+=1,逻辑和语法都比较清晰。
Asktruth 2017-09-01
  • 打赏
  • 举报
回复
这是前++和后++的区别啊,前++先加1再计算别的,后++先计算别的,之后再加1
-江流儿- 2017-09-01
  • 打赏
  • 举报
回复
引用 9 楼 WqxEzreal 的回复:
x++先取值运算再自增,++x先自增再取值运算。 把你的代码重构一下:
public static void main(String[] args) 
{	
int x=1;
for (; ; )
{
if (x==10)
{
x+=1;
break;
}
x+=1;
System.out.println(x);
}

}
当x==1时输出是2,一直到x==9输出是10,x==10时打破循环。 如果是++x,重构后的代码如下:
public static void main(String[] args) 
{	
int x=1;
for (; ; )
{
x+=1;
if (x==10)
{
break;
}
System.out.println(x);
}

}
当x==1时输出是2,一直到x==8时输出是9,x==9时打破循环 工作中我只用x++而且仅用于for循环的自增或者单独一行代替x+=1,逻辑和语法都比较清晰。
微风和浪 2017-08-31
  • 打赏
  • 举报
回复
++a和a++是有区别的,这个你得明白,可以百度一下,百度讲的很详细的
kedor 2017-08-12
  • 打赏
  • 举报
回复
三仙半 2017-08-09
  • 打赏
  • 举报
回复
运算符的结合性问题
墨笙弘一 2017-08-09
  • 打赏
  • 举报
回复
引用 1 楼 zc881124 的回复:
x++ 为9 的时候 这时执行完之后x已经为10了。因为是先赋值再++ ++x 是 先++ 再赋值 所以当x为9 时 这时执行++x 为10 符合调出break 要求。所以没有10
自由自在_Yu 2017-08-09
  • 打赏
  • 举报
回复
引用 1 楼 zc881124 的回复:
x++ 为9 的时候 这时执行完之后x已经为10了。因为是先赋值再++ ++x 是 先++ 再赋值 所以当x为9 时 这时执行++x 为10 符合调出break 要求。所以没有10
天涯若风 2017-08-08
  • 打赏
  • 举报
回复
引用 2楼广东吴彦祖1995 的回复:
[quote=引用 1 楼 zc881124 的回复:] x++ 为9 的时候 这时执行完之后x已经为10了。因为是先赋值再++ ++x 是 先++ 再赋值 所以当x为9 时 这时执行++x 为10 符合调出break 要求。所以没有10
[/quote]
李德胜1995 2017-08-08
  • 打赏
  • 举报
回复
引用 1 楼 zc881124 的回复:
x++ 为9 的时候 这时执行完之后x已经为10了。因为是先赋值再++ ++x 是 先++ 再赋值 所以当x为9 时 这时执行++x 为10 符合调出break 要求。所以没有10
110成成 2017-08-08
  • 打赏
  • 举报
回复
x++ 为9 的时候 这时执行完之后x已经为10了。因为是先赋值再++ ++x 是 先++ 再赋值 所以当x为9 时 这时执行++x 为10 符合调出break 要求。所以没有10

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧