class Person {

    int age;

}

public class LearnHeap {

    public static void main(String args[]){

        int a=18;
Person person = new Person();
person.age =18; change(a,person);
System.out.println("a="+ a+",and person.age = "+person.age); } static void change(int a1, Person person){ a1 = 20;
person.age= 2020;
System.out.println("a1="+ a1+",and age1 = "+person);//输出地址 } }

以上程序内存加载的执行步骤:

第1步 —— main()函数是程序入口,JVM先执行,首先将main方法压入栈中,在栈内存中开辟一个空间,存放int类型变量a,同时附值18。
      在堆中分配一片区域,用来存放和创建Person对象,这片内存区域会有属于自己的内存地址,假设是1001,然后给成员变量赋值,age=18
      执行结束后,构造防范弾栈,Person创建完成,将Person的内存地址1001赋值给person(此处person小写,是引用变量类型)

第2步 —— JVM执行change()函数,在栈内存中又开辟一个新的空间,存放int类型变量a和对象Person中person
     此时main空间与change空间并存,同时运行,互不影响。

第3步 —— change()方法执行,将a赋值为20,person对象的堆中年龄age赋值为2020

第4步 —— change()执行完毕,变量a立即释放,空间消失。但是main()函数空间仍存在,main中的变量a仍然存在,不受影响。而person在堆中对应的地址,所指的age已经赋值=2020

小结:如果a()方法中的基本类型(int, short, long, byte, float, double, boolean, char)变量x传入b()方法中,并在b()中进行了修改,则a()方法中的x的值保持不变 
如果a()方法中的引用类型        变量x传入b()方法中,并在b()中进行了修改,则a()方法中的x的值与b()保持一致

最新文章

  1. linux 删除进程的多种方法
  2. pcap文件的文件头的link type
  3. DevExpres.XtraLayout控件运行时动态设置数据项
  4. 电子设计省赛--DMA与ADC
  5. 数据挖掘算法学习(三)NaiveBayes算法
  6. NET Framework 4.5 五个新特性
  7. VMware Workstation 12 Pro 之安装林耐斯-LinuxMint-系统
  8. win10优化
  9. 【HDU-6146】Pokémon GO(dp)
  10. 博客主Judge已跳槽搬家emmm
  11. 【原创 Hadoop&Spark 动手实践 3】Hadoop2.7.3 MapReduce理论与动手实践
  12. C++ 执行 cmd 命令 删除文件 删除注册表项
  13. 1.加快Xshell客户端连接到CentOS的速度
  14. openfire维持在线状态,监听消息
  15. Android-Xml文件生成,Xml数据格式写入
  16. Mac服务管理-Launchd(转)
  17. 关于UI回调Invoker的实现(一)
  18. MDI窗体简单方法(调用,闪屏)
  19. PNP NPN NMOS PMOS S8050 S8550 SI2301 SI2302 2N3904 2N3906 78L05 TL431
  20. NHibernate中ISession的Flush

热门文章

  1. C 语言实例 - 约瑟夫生者死者小游戏
  2. 空指针异常与Optional类
  3. Linux02——解压和压缩
  4. IE6下的png不透明问题
  5. java -jar命令运行jar包时指定外部依赖jar包 linxux or windows
  6. Python基础(一) Python3环境搭建
  7. /var/lib/gems/2.5.0/gems/seccomp-tools-1.3.0/lib/seccomp-tools/dumper.rb:125: warning: Insecure world writable dir /home/python/.local in PATH, mode 040777 解决方案
  8. Java后台技术(TDDL)
  9. 数据表损坏:Incorrect key file for table
  10. 【代码总结】SQL语句设计