黑马程序员技术交流社区
标题:
新手求教!
[打印本页]
作者:
小时晚er
时间:
2013-7-25 11:37
标题:
新手求教!
本帖最后由 小时晚er 于 2013-7-26 15:53 编辑
请问各位大神们,i++,和i=i+1,的区别,在帮别人回答问题的时候我才发现这个问题,为什么i++,和i=i+1输出的值不一样,如int i=0, i++, System.out.println(i)的值和int i=0, i=i+1, System.out.println(i)的值不一样?
public static void main(String args[]){
int a=10;
int i=0;
while(a<30){
a+=10;
// i++;
i=i+1
}
System.out.println(i)
}
作者:
曹奎
时间:
2013-7-25 11:44
一样的 有图有真相
QQ图片20130725115125.jpg
(29.14 KB, 下载次数: 0)
下载附件
2013-7-25 11:44 上传
作者:
yinjiek
时间:
2013-7-25 12:13
i++,和i=i+1;i++ 为打印后或进入第二次循环在递增的;
i=i+1; 为运算完之后直接赋值了所以打印出来为1;
作者:
chilong_333
时间:
2013-7-25 15:59
i++是赋值在运算,就是说当i= i++时,就是i=i,但此时的I已经被赋值了,只有在下次调用时才会输入所赋值的数。
然而++i是先运算在赋值,与上诉正好相反。这样能理解吗?
作者:
逆袭的风
时间:
2013-7-26 11:07
这个的输出是一样的,i的输出值都为2
至于你说的i++和i=i+1的输出不一样,当时你是不是写的i=i++;,如果是这样的话,问题就好理解了
因为i=i++;中因为是后++,是先进行的赋值然后进行的自加运算.而i=i+1是先加1然后赋值,所以结果不一样.
希望对你有所帮助.
作者:
手心里的温柔
时间:
2013-7-26 12:14
先看代码:
class Test
{
public static void main(String args[])
{
System.out.println(demo_1());
System.out.println(demo_2());
}
public static int demo_1()
{
int x = 1;
return x++;
}
public static int demo_2()
{
int x = 1;
return x=x+1;
}
}
复制代码
demo_1()返回值为1;
demo_2()返回值为2;
分析: i++是先使用i的值然后i加1; i=i+1是把i+1赋给了i
作者:
李健09
时间:
2013-7-26 12:50
i++,是i进行运算,而后二次循环i递增此时i=i+1,第三次循环i(i+1)在递增此时i=i+1+1......;
i=i+1是把i+1的和赋给了i
作者:
longlangcx
时间:
2013-7-26 14:08
i++ 和 i = i + 1的区别只在于表达式的值不同,而++i和 i = i + 1似乎是完全相同的。这是对于int来说。
而对于比int小的类型来说有点不同,因为涉及自动类型提升。
比如:
byte b = 1;
b++; //ok
b = b + 1; //!error: 需要byte,找到int。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2