两个对象的内存调用


调用的步骤跟第一个对象的调用是一样的,执行到第二个对象的时候就跟第一个是一样的。

对象作为参数的内存图解

这里的showAge 调用的stu是student的类的引用,这里比C++优化了,C++如果不加引用&符号的话,它是采用一个对象的复本极其占用内存,但是JAVA里直接用的是引用,采用指针调用数据,很香!!!

JAVA中使用变量的规则


其中Student类中的study方法内置已有姓名的,所以不需要从方法外取用值张三丰。小黑是局部变量,张三丰是成员变量。小黑的储存在栈区,随着方法消失而消失,张三丰储存在堆区,随着类的消亡而失去。

JAVA中继承的内存管理


第一行代码初始化完毕


子类中的有颜色就近直接给子类附上红色,


子类的eat方法中还有赋值,将子类的颜色赋给父类的颜色。


为什么要先初始化父类呢?因为先定义子类的对象,进入子类后,发现没有父类,然后在方法区就压入父类,然后在压入子类。


多态类的内存图:
第一部分内存调用是跟继承类的结果差不多的。都先初始化,从方法区指向堆区开辟初始化数据
第二部分:
当执行到a.eat()方法的这一行的时候,找到堆中的基类中方法的地址0x066,然后到方法区0x066去执行,但是其中基类的方法被子类的方法重写了,存在一个虚拟方法表,会调用子类的方法。

JAVA的对象创建与调用的内存解析相关推荐

  1. java反射创建带参数对象_反射 Java反射对象创建 - 闪电教程JSRUN

    Java反射 -Java反射对象创建 我们可以使用反射动态创建类的对象.通过调用其中一个构造函数. 然后我们可以访问对象的细分的值,设置它们的值,并调用它们的方法. 有两种方法来创建对象: 使用no- ...

  2. java class对象创建时机_Java面向对象编程-类的声明周期

    第十章 类的生命周期 10.1 Java虚拟机及程序的生命周期 当通过java命令运行一个Java程序时,就启动了一个Java虚拟机进程.Java虚拟机进程从启动到终止的过程,称为Java虚拟机的生命 ...

  3. java 给对象创建实例_Java中创建(实例化)对象的五种方式

    Java中创建(实例化)对象的五种方式1.用new语句创建对象,这是最常见的创建对象的方法. 2.通过工厂方法返回对象,如:String str = String.valueOf(23); 3.运用反 ...

  4. java string对象创建_String对象创建个数

    s = new String("xyz");创建了几个String Object?两个对象,一个是"xyx",一个是指向"xyx"的引用对象 ...

  5. java 创建对象 设置属性_详解Java的对象创建

    1. 前言 在<还不清楚怎样面向对象?>和<面向对象再探究>两篇文章中,都介绍了关于面向对象程序设计的概念和特点.其中也涉及到了许多代码,比如: Dog dog = new D ...

  6. 关于Java String对象创建问题解惑

    先看看下面的代码     public String makinStrings()     {         String s = "Fred";         s = s + ...

  7. java string对象创建_Java问题解析:到底创建了几个String对象

    // 如果d和c没有指向了同一个对象,则说明d没有被加入字符串池 else { System.out.println(""ab"+"cd" 创建的对象 ...

  8. spring配置详解-三种对象创建方式_

    新建一个包,b_create,关于Spring创建对象的方式,咱们首先先介绍默认方式,我复制一个配置文件过来,在这个包下创建一个配置文件,把这些注释可以删掉了,现在咱们看到的情况,是常见的情况,这种情 ...

  9. Java学习总结(二十)——JSON解析:官方解析,GSON解析,FastJSON解析,

    一.JSON简介: 1.JSON(javaScript Object Notation)是一种轻量级的数据交换格式: 2.JSON数据作为目前网络中主流的数据传输格式之一,应用十分广泛: 3.JSON ...

  10. java include 传递对象_变量的值传递,地址引用(和对象成员变量、局部变量创建和初始化的内存机制)...

    变量的值传递,地址引用(和对象成员变量.局部变量创建和初始化的内存机制) 变量的值传递,地址引用: 搞懂=含义,=即指向,看指向的内存块是否发生改变,还有是否是新内存块, 通过指向可以控制内存块的值. ...

最新文章

  1. Tensorflow【实战Google深度学习框架】—完整的TensorFlow入门教程
  2. sql server set赋值和select 赋值的区别以及使用方法
  3. pythoncsv数据怎么读_python如何读写csv数据
  4. Linux中命令添加路由
  5. NHibernate初探-SQLDialects
  6. 脑洞大开的插画师,每幅都戳到我诡异的笑点
  7. Vue.js 第1章 Vue常用指令学习
  8. LG已停止手机生产 手机生产线向家电制造转变
  9. Netty工作笔记0051---Netty核心模块2
  10. 如何挑选大数据分析平台
  11. GlobalAuthenticationConfigurerAdapter.class 整合activiti 工作流报错
  12. virtuoso配合calibre进行电路后仿真
  13. NI软件卸载以及清除残余文件
  14. 微信小程序公农历转换的实现
  15. 选择粘贴性无html,office无法复制粘贴-Word把内容从一个文档选择性粘贴到另一个文档,具体操作方法...
  16. 7个实用方法,让你稳步提升记忆!
  17. 在电脑端微信或低版本ios,使用微信自带浏览器打开网页不显示
  18. 网络协议--网络四层协议
  19. 通过url路径传递参数
  20. html5播放器的示例代码

热门文章

  1. 车轮轨迹原理_倒车轮子原理是什么 倒车原理动画演示很有用
  2. springboot + mybatis 学英语网、背单词网站
  3. wordpress如何去掉顶部工具条
  4. oracle转类型sql,[转]SQL Server 和Oracle 数据类型对应
  5. python网站开发实例 flask_Python Web开发之——构建基于Flask框架的web后端项目
  6. java 静态存储区_Java中的堆内存、栈内存、静态存储区
  7. 计算机硬盘 u盘和光盘属于,磁盘U盘光盘的区别
  8. c++:template使用中的常见报错
  9. 【算法笔记】对两种线性基的理解
  10. 输入输出知识点和问题超全总结(持续更新中)