A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 坚持不懈 于 2012-11-2 06:21 编辑
  1. class Demo
  2. {
  3.         int x=3;
  4.         public static void main(String[] args)
  5.         {
  6.                 Demo d =new Demo();
  7.                 d.x=10;
  8.                 show(d);
  9.                 System.out.println(d.x);
  10.         }
  11.         public static void show(Demo d)
  12.         {
  13.                 d.x=6;
  14.         }
  15. }

  16. d在栈内存里产生  堆内存里产生一个int x=3
  17. d.x=10  堆内存里的int x 值现在是10
  18. 调用函数show在栈内存里产生,把整体d 传给show的参数
  19. show函数里改变的是d成员变量的值
  20. 最后输出是6


  21. class Demo
  22. {
  23.         public static void main(String[] args)
  24.         {
  25.                 int x = 4;
  26.                 show(x);
  27.                 System.out.println(x);
  28.         }
  29.         public static void show(int x)
  30.         {
  31.                 x = 2;
  32.         }
  33. }

  34. 在栈内存里产生一个 int x=4;
  35. show函数功能就是一个复制功能   
  36. 最后结果输出4
复制代码

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1

查看全部评分

1 个回复

倒序浏览
总结的很好啊!
在栈内存里产生一个 int x=4;
show函数功能就是一个复制功能   此时将show方法调用到栈内存中,其中,重新定义了一个x变量,这个变量只在show的内存区域内有效
.最后结果输出4

评分

参与人数 2技术分 +1 黑马币 +2 收起 理由
唐志兵 + 1
坚持不懈 + 2 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马