黑马程序员技术交流社区

标题: java基础 问题请教 [打印本页]

作者: 孙祚涛    时间: 2015-8-7 21:08
标题: java基础 问题请教
int b = 0;
b = b++;
System.out.println(b);
在这个程序里面,b=b++;这一行,右侧b赋值给左侧,此时b=0,然后b++,此时b=1。但是最后输出b=0.很是疑问这是怎么操作的,希望有知道的能回答,谢谢!
作者: 大头爱傻瓜    时间: 2015-8-7 21:17
b = b++;++在后先进行运算,然后在自增
作者: 小燕小男_爱情    时间: 2015-8-7 21:20
++当不是存在的时候 , ++在左先自增在进行运算, ++在右先运算在自增
作者: 黑色幽默K    时间: 2015-8-7 21:31
b=b++的时候,首先复制一个模版,然后自增,然后将模版的值赋值给b,即为0。
顺便说以下,这种问题知道怎么回事就好了,不要深究,否则会让你越来越迷糊.....影响学习
作者: Clouddd    时间: 2015-8-7 21:39
本帖最后由 Clouddd 于 2015-8-7 21:41 编辑

b = b++;是在b要在被使用后才会自增的;即将内存中的常量库中先把0取出给b赋值
而++b,则会先自动加一。
而这种问题呢,你知道b++和++b的区别就好。

作者: ch18346846149    时间: 2015-8-7 21:43
可以这样理解,你输出的是左边的b
作者: aa233192133    时间: 2015-8-7 21:54
画个内存图就会有答案了
作者: 何琼飞    时间: 2015-8-7 21:56
一楼的解答很好啊
作者: 黑马小伙儿    时间: 2015-8-7 22:16
b++是先运算再自增,++b是先自增再运算
作者: 酒倌浪人    时间: 2015-8-7 22:28
++在后,先赋值,所以是0,然后再自增。++在前,先自增在赋值,是1
作者: Morrfree    时间: 2015-8-7 22:30
b先赋值给自己,然后在自增的.
作者: wzb123baby    时间: 2015-8-7 22:35
这是自增运算符的特点,++在后就是先赋值,再自增,同样--运算符也是这样的
作者: 要踏实小伙子    时间: 2015-8-7 22:39
[b]int b = 0;
b = b++;      
//这里++放后面是告诉你  先使用b然后才自+1,也就是先把b最先定义的值0赋值给b,然后才加1,如果是++b,那么这里才是b=1;
System.out.println(b);  





作者: 风一样的少年    时间: 2015-8-7 22:48
b++就是0,++b就是1,这里面有个++在前还是在后的运算,视频中有讲到的,说的简单点就是,先++就是+完的值,后++就是初始的值
作者: JustForYou    时间: 2015-8-7 22:49
楼上的大神解答的都挺不错的。。
作者: codersun    时间: 2015-8-7 22:54
我也学习了!!!!!!!!!!!!
作者: small_horse    时间: 2015-8-7 23:07
呵呵,我也刚学完没几天,其实就是大家说的原则,++b是先自增1再参与运算,,b++是先运算,运算结束后自增1的原则.你说的此时b=0,b++了,参与运算的还是0呢
作者: Marx_D    时间: 2015-8-7 23:20
wo竟然无言以对,这是哪里的题目?
作者: 孙祚涛    时间: 2015-8-24 19:32
ch18346846149 发表于 2015-8-7 21:43
可以这样理解,你输出的是左边的b

程序怎么知道那个是输出的
作者: 画问好送明天    时间: 2015-8-24 20:07
++在后面,是先把值赋给b,然后加一
作者: 再见_悟空    时间: 2015-8-24 20:19
这个问题就是++的一个特殊的地方,就是0,++似乎有一个覆盖了赋值运算=的效果,记住就行了,不必深究
作者: jeska    时间: 2015-8-24 21:06
额,楼上说的都对,我都没话说了,反正就是++在前还是在后的区别




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