Java学习回顾-对象在内存中的加载过程
来源:互联网 发布:linux添加sgid权限 编辑:程序博客网 时间:2024/05/22 04:34
一、所运行的代码
//测试类package cn.itcast.javaeeday01;/** * * @author 大家都说名字长不会被发现 * */public class RomTest { public static void main(String[] args) { Student stu = new Student("周星驰",20); System.out.println("姓名:"+stu.getName()+"\n"+"年龄:"+stu.getAge()); }}
//Java Bean对象package cn.itcast.javaeeday01;/** * * @author 大家都说名字长不会被发现 * */public class Student { private String name; private int age; public Student(String name, int age) { super(); this.name = name; this.age = age; } public Student() { super(); // TODO Auto-generated constructor stub } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; }}
二、代码运行,在内存中加载的过程
1、首先会在方法区当中加载RomTest.class文件
2、当加载了类文件之后,会去找对应的程序入口(main方法)
3、当找到之后就要开始运行main方法中的代码,所以就会将main方法压入栈内存中去运行。
4、当代码走到Student stu = new Student(“周星驰”,20);这一步时,在方法区将会去加载
Student.class文件,然后会在栈内存中的main方法内存块中定义一个Student类型的变量。
然后在堆内存中开辟一块Student对象的空间,这块内存会有一个16进制的地址值,然后main方法
中的Student类型变量将会指向这块地址,在创建对象的过程中,会先去加载类当中的成员变量
这个时候会给成员变量进行初始化,String name 的初始化值为null,int age 的初始话值为0,
然后才会去调用类的构造方法,将传入的参数将name和age的初始化值覆盖掉。
5、当运行到打印语句时,会先去找到stu指向的地址,在对象内存中会有一个地址值指向方法区
当中的getName方法和getAge方法。然后将会将两个方法压入栈内存当中运行,运行完毕之后,因为
栈内存的特点后进先出,所以最先弹栈的方法是getAge->getName
6、main方法中的所有代码运行完毕之后同样会被弹出栈,在main方法被弹出栈之后,对象将会被回收
阅读全文
0 0
- Java学习回顾-对象在内存中的加载过程
- java 对象创建时,在内存中加载的过程
- 查看java对象在内存中的布局
- Java 对象在内存中的存储
- java对象在内存中的状态
- java对象在内存中的分配
- Java对象在内存中的表示
- 查看Java对象在内存中的布局
- php对象的学习1 对象在内存中的创建过程
- 简单的java代码在内存加载过程(详解)
- 对象在内存中的状态
- 对象在内存中的分配
- 对象在内存中的状态
- 对象在内存中的存储
- 对象在内存中的状态
- 对象在内存中的存储
- JVM学习(2)-Java常量,变量,对象(字面量)在内存中的存储位置
- Java对象在内存图示
- Codeforces 631C Report
- Android 清除缓存详细实现(显示缓存大小)
- Ubuntu 16.04 apt终端命令的使用以及软件的安装和卸载
- idea 激活地址填写
- Unity5.x EventSystem事件系统
- Java学习回顾-对象在内存中的加载过程
- CentOS7 64位下MySQL5.7安装与配置(YUM)
- 数据结构上机实践第十周项目1
- 元数据编辑器--(坑集锦)
- List<Object>强制转换为List<String>
- leetcode 46|47. Permutations 1|2
- OpenGL-shader排除错误方法
- 封装OkHttp的网络请求
- MPU6050开发 -- 进阶之I2C/SPI通信协议