java vs C 今天碰到一个这样的算术式:int x = 2;int y = 1;请问x+=x-=y输出几了?答案是3,跟C语言不一样。我知道java对基本操作是用栈来实现的,但如果一个数算表达式很长很长,而一般栈是有限的。java会有其他处理方法吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把这个表达式展开了就一目了然了x+=x-=y<=>x2=x2-y;x=x+x2;(x2=1,x=2)由于你的x不是static的因此它有多份拷贝,所以x2相当与x一个另一个拷贝,也就是说内存还另给x2开辟了一个空间 我补充一点x2=x2-y;的最终结果是x2=1,其实等号后的x2=2 好像不是这样的吧,如果先执行x-=y;那么x 的值变为了1,然后在执行x+=x;那么结果应该是2了,但是运行结果确实3.以前学C的时候毫无疑问结果是2,可是java好像在这点上不同于C,java应该是从坐往右执行,而不是想C从右往左执行。 有能说下java是怎么用堆栈是实现基本类型和引用的操作?? java有GC也就是垃圾收集器。GC会监听每一个变量和引用的动作。在合适的时间进行收集。把不需要变量或引用的释放掉,腾出空间。 问个正则 奇怪的金字塔--光棍节打击 怎样将String数组包存成.txt文件? 除Applet外没有别的可在线编辑工作流的方法了吗?? 〔300分〕JAVA怎样实现AJAX的一个实用功能?〔300分〕 急求Swing高手帮助,最小化后闪动功能,在线等,谢谢 JDBC事务处理问题 疑问求答,谢30分 继承的内存分配问题 java连接oracle数据库,求大神指点,谢谢 谁帮我写个JAVA修改数据库的代码呀?() 怎么样实现反编译啊?
x+=x-=y<=>x2=x2-y;x=x+x2;(x2=1,x=2)由于你的x不是static的因此它有多份拷贝,所以x2相当与x一个另一个拷贝,也就是说内存还另给x2开辟了一个空间
在合适的时间进行收集。把不需要变量或引用的释放掉,腾出空间。