黑马程序员技术交流社区

标题: 谁帮我分析一下这两句代码在内存中的情况? [打印本页]

作者: 王瀛    时间: 2013-7-27 23:07
标题: 谁帮我分析一下这两句代码在内存中的情况?
A:
byte b = 1; b = b += 1;   


B:
byte b = 1; b = ++b;  
作者: toShareBeauty    时间: 2013-7-27 23:36
本帖最后由 toShareBeauty 于 2013-7-27 23:58 编辑
  1. class Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 //1.先给 main 函数在 java 栈中创建栈帧
  6.                 //2.把 1 从常量池加载到 java 栈的 main 栈帧的操作数栈
  7.                 //3.把 操作数栈 中刚刚的 1 弹出来,存入 main 栈帧的局部变量区中第1个位置,也就是 b 变量,第0个位置是 args
  8.                 byte b = 1;
  9.                 //4.把 b 压入操作数栈
  10.                 //5.把 1 从常量池压入操作数栈
  11.                 //6.把操作数栈上面两个数相加把结果写入第二个数
  12.                 //7.把操作数栈第二个数由整形转为 byte 类型
  13.                 //8.把操作数栈第二个数弹栈,写入局部变量 b
  14.                 //9.把局部变量b 压入操作数栈
  15.                 //10.把操作数栈第二个数弹栈,写入局部变量 b
  16.                 b = b += 1;
  17.                
  18.                 // 这句和 b=b += 1; 完全一样
  19.                 b = ++b;
  20.                 System.out.println("Hello Java!");
  21.         }
  22. }
复制代码

QQ截图20130727234637.jpg (24.73 KB, 下载次数: 0)

QQ截图20130727234637.jpg

作者: 杜光    时间: 2013-7-28 17:01
toShareBeauty 发表于 2013-7-27 23:36

二楼画的图 不错。。。用什么工具化的?
作者: toShareBeauty    时间: 2013-7-28 19:39
杜光 发表于 2013-7-28 17:01
二楼画的图 不错。。。用什么工具化的?

亿图图示
作者: 杜光    时间: 2013-7-29 08:17
toShareBeauty 发表于 2013-7-28 19:39
亿图图示

谢谢。。。。。。。。




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