JAVA的对象创建与调用的内存解析
两个对象的内存调用
调用的步骤跟第一个对象的调用是一样的,执行到第二个对象的时候就跟第一个是一样的。
对象作为参数的内存图解
这里的showAge 调用的stu是student的类的引用,这里比C++优化了,C++如果不加引用&符号的话,它是采用一个对象的复本极其占用内存,但是JAVA里直接用的是引用,采用指针调用数据,很香!!!
JAVA中使用变量的规则
其中Student类中的study方法内置已有姓名的,所以不需要从方法外取用值张三丰。小黑是局部变量,张三丰是成员变量。小黑的储存在栈区,随着方法消失而消失,张三丰储存在堆区,随着类的消亡而失去。
JAVA中继承的内存管理
第一行代码初始化完毕
子类中的有颜色就近直接给子类附上红色,
子类的eat方法中还有赋值,将子类的颜色赋给父类的颜色。
为什么要先初始化父类呢?因为先定义子类的对象,进入子类后,发现没有父类,然后在方法区就压入父类,然后在压入子类。
多态类的内存图:
第一部分内存调用是跟继承类的结果差不多的。都先初始化,从方法区指向堆区开辟初始化数据
第二部分:
当执行到a.eat()方法的这一行的时候,找到堆中的基类中方法的地址0x066,然后到方法区0x066去执行,但是其中基类的方法被子类的方法重写了,存在一个虚拟方法表,会调用子类的方法。
JAVA的对象创建与调用的内存解析相关推荐
- java反射创建带参数对象_反射 Java反射对象创建 - 闪电教程JSRUN
Java反射 -Java反射对象创建 我们可以使用反射动态创建类的对象.通过调用其中一个构造函数. 然后我们可以访问对象的细分的值,设置它们的值,并调用它们的方法. 有两种方法来创建对象: 使用no- ...
- java class对象创建时机_Java面向对象编程-类的声明周期
第十章 类的生命周期 10.1 Java虚拟机及程序的生命周期 当通过java命令运行一个Java程序时,就启动了一个Java虚拟机进程.Java虚拟机进程从启动到终止的过程,称为Java虚拟机的生命 ...
- java 给对象创建实例_Java中创建(实例化)对象的五种方式
Java中创建(实例化)对象的五种方式1.用new语句创建对象,这是最常见的创建对象的方法. 2.通过工厂方法返回对象,如:String str = String.valueOf(23); 3.运用反 ...
- java string对象创建_String对象创建个数
s = new String("xyz");创建了几个String Object?两个对象,一个是"xyx",一个是指向"xyx"的引用对象 ...
- java 创建对象 设置属性_详解Java的对象创建
1. 前言 在<还不清楚怎样面向对象?>和<面向对象再探究>两篇文章中,都介绍了关于面向对象程序设计的概念和特点.其中也涉及到了许多代码,比如: Dog dog = new D ...
- 关于Java String对象创建问题解惑
先看看下面的代码 public String makinStrings() { String s = "Fred"; s = s + ...
- java string对象创建_Java问题解析:到底创建了几个String对象
// 如果d和c没有指向了同一个对象,则说明d没有被加入字符串池 else { System.out.println(""ab"+"cd" 创建的对象 ...
- spring配置详解-三种对象创建方式_
新建一个包,b_create,关于Spring创建对象的方式,咱们首先先介绍默认方式,我复制一个配置文件过来,在这个包下创建一个配置文件,把这些注释可以删掉了,现在咱们看到的情况,是常见的情况,这种情 ...
- Java学习总结(二十)——JSON解析:官方解析,GSON解析,FastJSON解析,
一.JSON简介: 1.JSON(javaScript Object Notation)是一种轻量级的数据交换格式: 2.JSON数据作为目前网络中主流的数据传输格式之一,应用十分广泛: 3.JSON ...
- java include 传递对象_变量的值传递,地址引用(和对象成员变量、局部变量创建和初始化的内存机制)...
变量的值传递,地址引用(和对象成员变量.局部变量创建和初始化的内存机制) 变量的值传递,地址引用: 搞懂=含义,=即指向,看指向的内存块是否发生改变,还有是否是新内存块, 通过指向可以控制内存块的值. ...
最新文章
- Tensorflow【实战Google深度学习框架】—完整的TensorFlow入门教程
- sql server set赋值和select 赋值的区别以及使用方法
- pythoncsv数据怎么读_python如何读写csv数据
- Linux中命令添加路由
- NHibernate初探-SQLDialects
- 脑洞大开的插画师,每幅都戳到我诡异的笑点
- Vue.js 第1章 Vue常用指令学习
- LG已停止手机生产 手机生产线向家电制造转变
- Netty工作笔记0051---Netty核心模块2
- 如何挑选大数据分析平台
- GlobalAuthenticationConfigurerAdapter.class 整合activiti 工作流报错
- virtuoso配合calibre进行电路后仿真
- NI软件卸载以及清除残余文件
- 微信小程序公农历转换的实现
- 选择粘贴性无html,office无法复制粘贴-Word把内容从一个文档选择性粘贴到另一个文档,具体操作方法...
- 7个实用方法,让你稳步提升记忆!
- 在电脑端微信或低版本ios,使用微信自带浏览器打开网页不显示
- 网络协议--网络四层协议
- 通过url路径传递参数
- html5播放器的示例代码
热门文章
- 车轮轨迹原理_倒车轮子原理是什么 倒车原理动画演示很有用
- springboot + mybatis 学英语网、背单词网站
- wordpress如何去掉顶部工具条
- oracle转类型sql,[转]SQL Server 和Oracle 数据类型对应
- python网站开发实例 flask_Python Web开发之——构建基于Flask框架的web后端项目
- java 静态存储区_Java中的堆内存、栈内存、静态存储区
- 计算机硬盘 u盘和光盘属于,磁盘U盘光盘的区别
- c++:template使用中的常见报错
- 【算法笔记】对两种线性基的理解
- 输入输出知识点和问题超全总结(持续更新中)