阶段1 语言基础+高级_1-2 -面向对象和封装_7一个对象的内存图

把代码粘贴出来,没用注释都去掉。

凡事new出来的都是堆当中


对于对象来说,他的成员方法实际上保存的是它的地址。看绿色箭头的部分

红色箭头部分


根据one可以找到0x666的堆,成员变量直接就是红色部分,成员方法是红色先,然后再走绿色部分。
call方法要想运行,也要进栈,进栈为什么也叫做压栈。main方法是先来的,先来在底下。后来的后来居上,这就叫做压栈

蓝色部分运行call方法。执行后,黑色的差号。 出栈也叫作弹栈,方法调用后会立刻从栈中消失。那么main方法就重见天日

main方法重见天日后,就会继续调用sendMessage方法。sendMessage也进栈

调用sendMessage方法
main方法完事后也是出栈的

这就是完整的当我们去创建对象,访问成员变量,调用成员方法,内存当中栈内存,堆内存和方法区所发生的事情

原文地址:https://www.cnblogs.com/wangjunwei/p/11194427.html

时间: 2024-08-02 21:40:15

阶段1 语言基础+高级_1-2 -面向对象和封装_7一个对象的内存图的相关文章

阶段1 语言基础+高级_1-2 -面向对象和封装_1

面向对象思想的概述 面向谁就更加关注谁. 程序里面有面向过程 写一个打印数组的功能代码 在面向对象出现之前,有个叫做面向过程. 面向对象可以劣迹为偷懒 打印数组用两种思想分别来实现. 最后一个元素后面没有逗号,最后是大括号,判断是否是最后一个元素 以上就是面向过程的思想. 下面开始面向对象,找人帮我做事情.具体实现我不管 这就是思想的不一样.Arrays.toString是jdk给我提供好的. 只用了一句代码就解决了问题.面向对象比面向过程简单很多 生活中面向对象的举例 原文地址:https:/

阶段1 语言基础+高级_1-2 -面向对象和封装_17构造方法

新建一个学生类   新建demo02Student 在用new创建类的时候,后面的类名称其实就是构造方法 new对象就是在调用构造方法 写上return 就会报错.构造方法中,不能产生返回值 定义了成员变量name和age 这两个.在构造函数内赋值 全参,两个成员变量都包含了.这样省的去调用setXX方法了.直接在构造函数内就可以给成员变量进行赋值 给成员变量加上get和set的方法 这样的话,set不就是白写了吗.直接在构造函数内就可以赋值了. 原文地址:https://www.cnblogs

阶段1 语言基础+高级_1-2 -面向对象和封装_18定义一个标准的类

做一个综合的练习 如何定义一个标准的学生类 向下选择getter和setter 选中这两个 这样就自动出现了get和set的方法 生成构造方法 无参的 运行测试 全参的方式 set修改年龄 原文地址:https://www.cnblogs.com/wangjunwei/p/11198197.html

阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第6节 Lambda表达式_1_函数式编程思想概述

函数式编程和面向对象的区别 原文地址:https://www.cnblogs.com/wangjunwei/p/11261580.html

阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第1节 Scanner类_3-Scanner的使用步骤

Scanner如何进行键盘输入,引用类型就包含了Scanner,它就是引用类型,所以也有这三个步骤, 导包.创建.使用 先通过api文档找到它.左边输入要查找scanner.双夹scanner右边就会出现了. 在java.util包里面 第一步导包,因为我们的代码还没有用上,所以现在还是灰色的 2.创建对象 有这么多的构造方法,但是没有哪个是留空的, 我们必须在小括号内写上内容.那么写什么呢? 只要在小括号内写上System.in就可以了 代表的含义是从键盘进行输入 3.使用 需要调用对象当中的

阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第6节 static静态_13_静态static关键字修饰成员方法

static关键字 用来修饰方法的情况 任何使用这个静态方法呢? 可以直接通过对象名称的方式进行调用. 更好的写法是通过类名称进行调用. 分别定义成员变量和静态变量 静态方法里面不能用this 原文地址:https://www.cnblogs.com/wangjunwei/p/11206517.html

阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第2节 抽象类_14-抽象的概念

先来了解什么叫做抽象 父类有个计算面积的方法,但是不同的图形计算面积的方式是不一样的.所以这里的计算面积的方法就是个抽象的方法. 只有到具体的子类里面才能去实现具体的计算面积的方法 动物类是父类.有吃东西的方法.但是具体吃什么要看子类 如狗吃的是骨头.猫吃的是鱼. 动物这个类是个抽象的概念不够具体 原文地址:https://www.cnblogs.com/wangjunwei/p/11215201.html

阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第3节 接口_14_接口之间的多继承

新建接口,并定义抽象方法mehtodA 再创建接口B,方法也改成了methodB 定义接口实现了接口A也实现了接口B 这个接口内置定义一个抽象的method,这个接口里面实际有三个抽象方法,从接口A继承了methodA.从接口B继承了methodB 接口B内 再增加一个methodCommon的方法 在接口A里面也定义了,方法mehtodCommon 那么现在这个子接口内,一共有几个方法????. 新建实现接口类. 实现子接口 Alt+回车 这样就是一共有四个方法 这就是接口与接口之间的多继承.

阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第4节 多态_15_多态的概述

不是多种状态,而是有多种形态 继承是多态的前提 子类就是一个父类.学生就是一个人 多态性说的是这个对象. 原文地址:https://www.cnblogs.com/wangjunwei/p/11219107.html