黑马程序员技术交流社区

标题: 在不用运行的情况下,谁能说出下面这段代码的运行结果 [打印本页]

作者: 364785953    时间: 2015-3-20 19:38
标题: 在不用运行的情况下,谁能说出下面这段代码的运行结果
public class Test{
public static void main(String[] args){
int j = 0;
for(int i = 0; i < 10; i ++){
j = j++;
}
System.out.print(j);
}

}
作者: tubao1991    时间: 2015-3-20 21:14
正常情况下不会用j=j++来达到j自增的效果,这样没有达到把j++的值赋值给j  答案:0
作者: 我是main    时间: 2015-3-20 22:28
这是8吧


作者: 一抹浓茶    时间: 2015-3-20 22:35
答案是0吧,j++值会变,但是j++赋给j,虽然++也会运算,但是赋值的时候赋的还是原来的j值,初始化j为0,不管循环多少次,结果还是0
作者: 绝望    时间: 2015-3-21 22:04
0,每次加完又改回去了
作者: 勇闯☀☀黑马    时间: 2015-3-21 22:22
答案是0
作者: liyuehua    时间: 2015-3-21 22:30

public class Test{
public static void main(String[] args){
int j = 0;
for(int i = 0; i < 10; i ++){
j = ++j;
}
System.out.print(j);
}

}

改成这样后结果为10
作者: 夜班心桥    时间: 2015-3-21 22:45
一抹浓茶 发表于 2015-3-20 22:35
答案是0吧,j++值会变,但是j++赋给j,虽然++也会运算,但是赋值的时候赋的还是原来的j值,初始化j为0,不 ...

j=j++; 先把0赋值给了j,然后j++,j变成1。再继续这样下去,j一直增加啊,为什么结果还是0呢?求详细解释,谢谢!
作者: One_M    时间: 2015-3-21 23:18
j=j++ 只是 J先把0给了j  然后自加1 这是J 记录的值还是0 ,把 “J=J++ ”  换成“ j+=1” 这样就OK 了 ~!!
作者: 卟離不棄    时间: 2015-3-21 23:36
顶了  慢慢看
作者: Dark县令    时间: 2015-3-21 23:52
这个是0,毫无疑问当++后并未赋值给j
作者: thoris    时间: 2015-3-22 00:00
先算=  再++
作者: 空洞的望着窗外    时间: 2015-3-22 10:41
0,循环也是一个代码块,当代码块执行完后,局部变量就会被回收了,j++的确做了自增的事,但是由于j=j++,是先赋值,再自增,塔自增的效果是空的,只自增并没有赋值成功就被回收器自动回收了,一直循环10次,所以还是这样的结果
作者: 空洞的望着窗外    时间: 2015-3-22 10:43
如果是j=++j,那么就是先自增后赋值,结果为10
作者: 邓士林    时间: 2015-3-22 11:46
结果就是0
作者: 你好我是潘机智    时间: 2015-3-22 12:23
结果是0 就算j++在赋值之后自增了 在给j赋值完成之后会回到i++的步骤,所以结果是0
作者: 傻大憨粗萌    时间: 2015-3-22 12:53
j=j++这个指令并没有给j赋值的功能i,毕老师视频讲过,现学现卖:lol
作者: 高双    时间: 2015-3-22 13:16
我觉得应该是8吧
作者: 无力去闹    时间: 2015-3-22 13:35
我也认为0是ok的
作者: 若辰    时间: 2015-3-22 13:43
一道题引发的血案,好多答案啊,哈哈。讨论共同进步啊




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