java - Byte自增问题
问题描述
Byte a = 123;a++;System.out.println(a);// 124/* * 上面的结论是: a++的时候首先是 创建一个Byte对象124,然后将a引用指向这个Byte 124对象,这个解释有问题吗? */Byte b = 126;b = b++;System.out.println(b);// 126/* * 根据第一段代码的执行结果; * b=b++,的执行操作是首相将b引用赋值给b引用,所以没有改变,然后将b引用所指向的对象自增(这个实现的过程是创建一个对象值为127, * 然后让b引用指向这个127),如果这样理解,结果不应该是127吗 */
求解,谢谢
问题解答
回答1:b = b++: 如果了解 C++ 的话,可以参考 ++ 的自增的实现,应该就能理解为什么是 126 了
Byte operator++(Byte) { Byte temp = *this; this->value = this->value + 1; return temp;}
可以理解为 b 等于操作自增前的 temp
回答2:++、--务必单独写,否则就是自己给自己找麻烦。对于像i=i+++++i这种题目,只能鄙视了……
回答3:已解决http://blog.csdn.net/brooksyc...跟帖接分
回答4:++b和b++的区别,其实没啥用
回答5:java栈帧含有局部变量表和操作数栈,++自增操作是对局部变量表中的值直接操作的,i=i++时,先把局部变量表的i压入操作数栈,再把局部变量表的i加1变为127,然后把操作数栈中的i(126)写回到局部变量表的i中,覆盖了127数据,变为126了。而++i顺序不同,是先自增局部变量表的i,然后再加入操作数栈的。
相关文章:
1. spring-mvc - spring-session-redis HttpSessionListener失效2. node.js - express框架,设置浏览器从缓存中读取静态文件,只有js从缓存中读取了,css还有一些图片为何没有从缓存中读取?3. dockerfile - 我用docker build的时候出现下边问题 麻烦帮我看一下4. python - flask post提交timestamp不能作为参数,这是为什么?5. python 计算两个时间相差的分钟数,超过一天时计算不对6. android glide asbitmap 在baseadpter中的问题7. java - web端百度网盘的一个操作为什么要分两次请求服务器, 有什么好处吗8. jquery - js向两边展开9. javascript - 如何获取未来元素的父元素在页面中所有相同元素中是第几个?10. 前端 - @media query 使用出现的问题?

网公网安备