首页 > 系统相关 >秦疆的Java课程笔记:65 面向对象 创建对象内存分析

秦疆的Java课程笔记:65 面向对象 创建对象内存分析

时间:2023-12-12 16:33:21浏览次数:27  
标签:Java name Pet age 创建对象 cat 65 main public

  • 先写两个类
//创建一个Pet类==============================
package OOP.demo;  
public class Pet {  
    public String name;  
    public int age;  
    public void shout() {  
        System.out.println("喵~~");  
    }  
}
//主程序Application==========================
package OOP;  
import OOP.demo.Pet;  
public class Application {  
    public static void main(String[] args) {  
        Pet cat = new Pet();  
        cat.name = "Sherlock";  
        cat.age = 4;  
        cat.shout();  
        System.out.println(cat.name);  
        System.out.println(cat.age);  
    }  
}
  • 内存分析图:
  • 程序运行最开始,加载Application的主程序方法在方法区。(方法区也在堆中)
  • 此时,带有关键词static的“类的静态成员”也和“类”一起加载。(之前笔记里我把这个叫“类的静态家族”,也不知道在哪儿看的了,后来感觉“类的静态成员”这个译名更舒服一些)
  • 之后执行main方法,main方法总是在栈的底部。一般main方法结束时,程序也就结束了。
  • Pet cat = new Pet();时,对应加载了Pet方法,即import OOP.demo.Pet; ,此时Pet方法也进入方法区。
  • 同时,生成的对象cat,在栈中出现一个引用变量名,在堆中也分配了相应的内存空间。栈中的cat是一个地址,指向堆中cat实际的数据。
  • 此时cat的name、age等未赋值,都是默认值。
  • 之后cat.name = "Sherlock";cat.age = 4;为cat赋值,更新堆中的数据。

标签:Java,name,Pet,age,创建对象,cat,65,main,public
From: https://www.cnblogs.com/Acolyte/p/17897228.html

相关文章

  • java计算二个经纬度间的距离(百度坐标)
    1:背景工作中遇到计算二个地点之间的距离,根据百度经纬度进行计算。2:maven依赖<dependency><groupId>org.gavaghan</groupId><artifactId>geodesy</artifactId><version>1.1.3</version></dependency>3:代码实现packagecom.pacific.transfe......
  • 零基础30天学会Java-韩顺平
    第一章概述了解了该视频课程的大纲和Java的基本知识,Java1995年推出,目前稳定维护的有Java8和Java11版本。JVM(Java虚拟机):JVM包含于JDK中,Java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行"JRE(Java运行环境):JRE=JVM+Java的核心类库。JDK(Java开发工具包):JDK=JRE+Jav......
  • Java-04数组
    tip:[start]程序=逻辑+数据,数组是存储数据的强而有力的手段。——闫学灿tip:[end]一维数组数组的定义数组的定义方式和变量类似。java中数组的定义[]是写在数组名前面(与c++区分),开辟长度需要new,即面向对象。publicclassMain{publicstaticvoidmain(String[]......
  • java异常
    一、概述 二、JVM对异常的处理方案 三、异常处理1、try..catch 示例: 2、Throwable  3、throws  示例:  四、编译时异常和运行时异常区别示例:  五、自定义异常 六、throws和throw ......
  • java实现文件上传和下载
    本文实例为大家分享了java实现文件上传和下载的具体代码,供大家参考,具体内容如下文件的上传upload:文件上传客户端通过表单的文件域file 把客户端的文件上传保存到服务器的硬盘上页面首先对上传的表单有以下要求:必须有文件域:inputtype=file表单提交方式:method=post表......
  • java基本类型包装类
    一、概述  二、Integer包装类 三、int和String的转换 1、方式一 2、方式二 3、方式三 4、方式四 四、自动装箱和拆箱 五、日期格式化 示例: ......
  • 07 java运行时数据区域
    包含堆、方法区、程序计数器、本地方法栈、虚拟机栈。这就是运行数据区的几个部分。其中堆和方法区是线程共有的,其它数据区域是线程私有的。堆中存储对象数据。方法区中储存类信息、常量及静态变量等信息。方法栈中的栈帧和线程的寿命是一致的,储存方法执行时的相关常量,比如局部变量......
  • 高并发情况下的漏桶算法(javascript版)
    classLeakyBucket{//高并发情况下的漏桶算法 constructor(capacity,leakRate){//创建一个容量为capacity,每秒漏水量为leakRate的漏桶 this.capacity=capacity; this.leakRate=leakRate; this.water=0; this.lastLeakTime=Date.now(); ......
  • Java-SpringBean的生命周期
    Java-SpringBean的生命周期简单版实例化(Instantiation):当Spring容器启动时,它会检查配置文件或注解,然后实例化所有在配置中声明的Bean。这是通过构造函数或工厂方法进行的。属性设置(PopulationofProperties):容器实例化Bean后,会通过依赖注入或者setter方法将配置的......
  • Java开发者的Python快速实战指南:实用工具之PDF转DOCX文档(可视化界面)
    首先,大家对Python语法的了解已经基本完成,现在我们需要开始进行各种练习。我为大家准备了一些练习题目,比如之前的向量数据库等,这些题目可以参考第三方的SDK来进行操作,文档也是比较完善的。这个过程有点像我们之前使用Java对接第三方接口的方式,所以今天我想开发一个很实用的工具类,用......