黑马程序员技术交流社区

标题: ++的疑问 [打印本页]

作者: yangming    时间: 2015-4-27 22:39
标题: ++的疑问
++有两种,一种放在变量后,一种放在变量前,好像有区别。但不知区别究竟在哪?
例如:b++与++b
class Example{
public static void main(String[] args)
{
int a=1;
int b=2;
int c = a + b++;
int d = a+ (++b);
System.out.println("b="+b);
System.out.println("c="+c);
System.out.println("d="+d);
}
}
作者: xiao7181jun    时间: 2015-4-27 22:44
本帖最后由 xiao7181jun 于 2015-4-27 23:16 编辑

答: b++与++b的区别主要是赋值与自增的先后顺序不一样。 b++是先把b的值赋予左边变量,然后自己再自增。++b是先自增,再把自增后的值赋予左边变量。
例如:
int b = 3;
int c = b++; //这条语句你如果输b、c的值得话,b先向左边变量c赋值,得 c = 3,然后b再自增后,b =4。
int c= ++b; //这条语句如果输出b、c的值得话,b先自增,b = 4, 然后把自增后的值 赋予左边变量c,得 c = 4 。
说明:++b,b++ 自增的值都是 1。


作者: hui1130    时间: 2015-4-27 22:45
多看看毕老师视频
作者: 18463730277    时间: 2015-4-27 22:52
int a=1; int b=2; int d = a+ (++b); 输出是4,3,5.b有两次++,最后输出的时候,是4; int c = a + b++;a和b相加,相加之后b自增加一,所以c是1+2=3; int d=a+(++b);先算(++b)此时b上次自增再自增是4,加上a所以输出5. ++b是b先自增,再参与运算;b++是先参与操作,再自增。
作者: IDhmpj    时间: 2015-4-27 23:14
要理解++在前和在后的问题,要带着内存去理解。
变量初始化完成,内存就有一个值,进行赋值的时候会从内存取值,运算后会改变内存中的值。
++在前,先运算,再赋值。初始化值为1,那么就会在运算后变为2,赋值时,取出的就是2。
++在后,先赋值,再运算。初始化为1,赋值时取到的值为1,再运算后变为2,如果再取值就是2(比如打印这个变量的值)。
作者: yangming    时间: 2015-4-28 07:33
xiao7181jun 发表于 2015-4-27 22:44
答: b++与++b的区别主要是赋值与自增的先后顺序不一样。 b++是先把b的值赋予左边变量,然后自己再自增。++ ...

太感谢了,解释地很详细,终于弄懂了。:)
作者: yangming    时间: 2015-4-28 07:34
hui1130 发表于 2015-4-27 22:45
多看看毕老师视频

嗯,是的,毕老师视频很不错,现在正学基础,看了前面的一部分。
作者: yangming    时间: 2015-4-28 07:36
18463730277 发表于 2015-4-27 22:52
int a=1; int b=2; int d = a+ (++b); 输出是4,3,5.b有两次++,最后输出的时候,是4; int c = a + b++;a和 ...

谢谢你,我理解了。你真行!:handshake
作者: yangming    时间: 2015-4-28 07:38
IDhmpj 发表于 2015-4-27 23:14
要理解++在前和在后的问题,要带着内存去理解。
变量初始化完成,内存就有一个值,进行赋值的时候会从内存 ...

嗯,谢谢你的解答,终于搞懂了,:loveliness:
作者: 海带    时间: 2015-4-28 08:39
不错又温习了一下自增自减,
作者: Cat    时间: 2015-4-28 09:01
学习一下
作者: fc734228945    时间: 2015-4-28 09:14
:lol毕老师用吃饭解释的。多看看
作者: 苟苟    时间: 2015-4-28 09:16
都是自增运算,如b++,指运算后自增,++b,是在运算前自增
作者: 夕颜    时间: 2015-4-28 09:22
b++和++b,对于b来说,它都是在原来的基础上加1。用毕老师的话说:b++是先去玩再回来吃饭,++b是先吃饭再去玩。
作者: 夕颜    时间: 2015-4-28 09:27
b++和++b,对于b来说,它都是在原来的基础上加1。用毕老师的话说:b++是先去玩再回来吃饭,++b是先吃饭再去玩。
作者: 夕颜    时间: 2015-4-28 09:28
b++和++b对于b来说都是一样的。都是在原来b的基础上加1,用毕老师的话说:b++先去玩再回来吃饭,++b先去吃饭在回来吃饭,最终b都吃饭了
作者: 夕颜    时间: 2015-4-28 09:31
b++和++b对于b来说都是一样,都是在b原值的基础上加1,。用毕老师的话说:b++先去玩再回来吃饭,++b先吃饭再去玩,两种情况b都吃饭了。a=b
作者: silencer    时间: 2015-4-28 09:34
路过。。。
作者: zhuchangbao    时间: 2015-4-28 09:36
就是来看看,一起学习一下。
作者: dengxing    时间: 2015-4-28 09:38
xiao7181jun 发表于 2015-4-27 22:44
答: b++与++b的区别主要是赋值与自增的先后顺序不一样。 b++是先把b的值赋予左边变量,然后自己再自增。++ ...

赞!!!

作者: cani1see    时间: 2015-4-28 10:04
我猜你还是很迷糊
请看我的帖子
http://bbs.itheima.com/thread-190759-1-1.html




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