有道题不知道具体原因,求解释 int j = 10;j = j++;输出j的结果是多少?原因是什么?求具体解释 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 11,执行完这个语句之后如果打印j的话,因为先赋值,j = 10,执行完j = 11,如果直接打印那个赋值语句的话就是10了。 当然是11相信你应该知道:int j = 10;i = j++ ;这个时候i就是10,(但是j最后的值已经为11)但是当你执行j=j++的时候,就是j=11了(你搞明白前面一个括号的意思就能明白了) why i can not get something can you speak Chinese, my English is poor. 我也以为是11,但一运行发现是10,我到百度找了一下,这是我copy的java中的i++或者i--:当遇到表达式中有i++,它会开辟一个新的内存存放原来的旧值,旧的内存中的值加1,然后(注意然后),表达式中用新的内存存放的旧值运算,把结果附给等号左边。所以i=i++后,i又成0勒你试试i=(i++)+(i++)i=(i++)+ii=(i++)+(i++)+i 10··因为自加是自身+1j=j++;这里先将原来的值传给j··j再自加··其实就是不痛两块内存地址的改变·· 这东西真的很纠结 j = j++;应该是j = 10;..说不清了 肯定是10 的。。 这个问题 在JAVA解惑里面有提到过。。 但是我只是记住了。。 但是还是对这个有点想法 int j = 199; j++; System.out.println(j); 打印的话 是 200 也就是 说j++改变了 J的数值 j = j++ 是把 199 赋值给料j 最后打印出来时 199 但是 j++ 改变成的 200 到底是改变的谁呢? 我对这个也是没有理解开啦 这个原因很简单,首先就是Java运算符的优先级,其次是运算符运算的“时效”性:在j=j++这个表达式中,运算符"="优先级低于运算符"++",所以先运算子表达式j++;注意运算符一旦参与运算是立即生效的,就是说当子表达式j++运算完成后,其表达式结果是之前的j值,但是j本身已经立刻变成了+1的值;之后进行的是=赋值运算,j被赋值为子表达式的结果值,即原来的j值。再举个更透彻的例子,大家实验一下就清楚了:j=10k=(j++)+(j++) 下面是编译后的java直接吗指令和运行时的堆栈变化和变量变化过程int j= 10j = j++指令 堆栈 {}load 10 {10}store j {} j=10load j {10}dup {10,10}load 1 {10,10,1}add {10,11}store j {10} j=11store j {} j=10 毫无疑问是10啦 自己编一下就知道了 首先i=10;第二句i=i++;是将10付给i,++实在这个程序运行完了才加一 先说答案 :10 这里,我们可以发现一个问题,在学习java中, i++ ++i 是有区别的,我们这样分析吧:定义的量在++前面的,我们先抄写下来它的值,然后再给它+1那么,那个+1,是在这一轮程序运行完毕之后才会加到i的上面。而++i就不一样了,它先对i进行了自增,先处理了++ 然后再输出值 运行了,答案是10。因为j++是等于10的,j=j++就说明10被赋值给了j,不管j之前是多少,赋值之后都等于10了。 int j = 10;j = j++;晕,差点被绕进去了仔细分析,就是j++和++j的不同之处j=j++,是先将j赋值给变量后再加1,而++j是先加1再赋值给变量,所以,结论如下:int j = 10;j = j++;System.out.println(j);结果应该是10而int j = 10;j = ++j;System.out.println(j);结果应该是11 j=11。执行j=j++;开始,前面的j=10。之后j又自增,就11啦。 运行的结果是10,你可以这样想 如果不是j=j++;而是i=j++;那么应该是i=10,j=11;因为运算的次序是i=j;j=j+1;现在是j=j++; 在进行j++ 运算后返回的是j,而j的值是10,本来经过此步骤后要运算j=j+1的,但是你又重新给j赋值了,所以j就等于j了。如果你真的要搞清楚,我建议你debug看看哦 Java 程序如何在linux 下用JDBC连接mysql lucene索引文件遇到内存问题! 关于进制的问题 求jbuilder8或9的中文电子教程 急!!!!!!!请问cloudscape的问题! setContentPane的作用 在线等待,请高手回答 jdbc for oracle ----oci方式 使用连接池时连接数据库的错误,快来帮帮忙! 我要跳楼了! 为什么我不能用中文条件查询? java的native方法clone()是怎么实现的 把下面字符串截成一个个
相信你应该知道:
int j = 10;
i = j++ ;
这个时候i就是10,(但是j最后的值已经为11)
但是当你执行j=j++的时候,就是j=11了(你搞明白前面一个括号的意思就能明白了)
所以i=i++后,i又成0勒
你试试i=(i++)+(i++)
i=(i++)+i
i=(i++)+(i++)+i
j=j++;这里先将原来的值传给j··j再自加··
其实就是不痛两块内存地址的改变··
这个问题 在JAVA解惑里面有提到过。。
但是我只是记住了。。 但是还是对这个有点想法
int j = 199;
j++;
System.out.println(j);
打印的话 是 200 也就是 说j++改变了 J的数值
j = j++
是把 199 赋值给料j 最后打印出来时 199
但是 j++ 改变成的 200 到底是改变的谁呢?
我对这个也是没有理解开啦
j=10
k=(j++)+(j++)
int j= 10
j = j++
指令 堆栈
{}
load 10 {10}
store j {} j=10
load j {10}
dup {10,10}
load 1 {10,10,1}
add {10,11}
store j {10} j=11
store j {} j=10
第二句i=i++;是将10付给i,++实在这个程序运行完了才加一
i++ ++i 是有区别的,
我们这样分析吧:
定义的量在++前面的,我们先抄写下来它的值,然后再给它+1
那么,那个+1,是在这一轮程序运行完毕之后才会加到i的上面。而++i就不一样了,它先对i进行了自增,先处理了++ 然后再输出值
j = j++;
晕,差点被绕进去了
仔细分析,就是j++和++j的不同之处
j=j++,是先将j赋值给变量后再加1,而++j是先加1再赋值给变量,
所以,结论如下:
int j = 10;
j = j++;
System.out.println(j);结果应该是10
而
int j = 10;
j = ++j;
System.out.println(j);结果应该是11
执行j=j++;开始,前面的j=10。之后j又自增,就11啦。
如果你真的要搞清楚,我建议你debug看看哦