以 Student s=new Student() 为例:
Java语言中创建一个对象时的整个过程主要有两个步骤:

1.类加载过程
  1. 加载:将类名下的字节码文件加载进虚拟机(VM),并存储在方法区,并转换成java.lang,class对象实例;
  2. 验证:验证是否符合文件规范;
  3. 准备:为类中静态变量都赋初始值,final直接赋值;
  4. 解析:将常量池中的符号引用转为直接引用;
  5. 初始化:a.为静态变量赋值;b.执行static代码块(类的加载顺序是先加载父类后加载子类,且static静态代码块和静态变量和类一样最先加载);
    最终方法区会存储当前类类信息,包括类的静态变量、类初始化代码(定义静态变量时的赋值语句 和 静态初始化代码块)、实例变量定义、实例初始化代码(定义实例变量时的赋值语句实例代码块和构造方法)和实例方法,还有父类的类信息引用。
2.创建对象
  • 加载Student.class文件进方法区
  • 在栈内存为s开辟空间
  • 在堆内存为学生对象开辟空间
  • 对学生对象的成员变量进行默认初始化
  • 对学生对象的成员变量进行显示初始化
  • 学生对象初始化完毕,把对象地址赋值给s变量,即可进行下一步操作;

new(创建)一个对象时都发生了什么?相关推荐

  1. 十天学Linux内核之第七天---电源开和关时都发生了什么

    十天学Linux内核之第七天---电源开和关时都发生了什么 原文:十天学Linux内核之第七天---电源开和关时都发生了什么 说实话感觉自己快写不下去了,其一是有些勉强跟不上来,其二是感觉自己越写越差 ...

  2. 计算机启动时都发生了什么?

    计算机启动时都发生了什么? 介绍下基本输入输出系统 1.BIOS(Basic I/O system) BIOS 也就是基本输入输出系统 – 同时也是计算机启动时加载的第一个软件 它的位置: 计算机主板 ...

  3. 813-当你请求www.baidu.com时都发生了什么?

    当你请求www.baidu.com时都发生了什么? 同一个局域网中不同主机的互联 先看个简单的,同一个局域网中的不同主机A.B之间是如何互联交换数据的.如下图: 那,既然是同一个局域网中,说明A.B的 ...

  4. 这一次!我在百度告诉你,当你请求百度时都发生了什么...

    文章目录 一.Hi All 二.同一个局域网中不同主机的互联 三.跨网段不同主机的互联 四.百度的响应包如何再打回到你的机器? 五.求关注啦! 一.Hi All 这一次,我在IDC机房告诉你,当你请求 ...

  5. 创建一个对象时,在一个类当中 静态代码块 和普通代码块构造方法 的顺序?

    一:前言须知 普通代码块,在创建对象实例的时候,会被调用,每创建一次,就调用一次 静态代码块,在类加载的时候执行,并且只会执行一次 类加载的时机: 创建对象实例的时候(new) 创建子类实例的时候,父 ...

  6. 设计模板类,使得在创建一个对象时可以动态确定它的基类(public)

    #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; class base_A { public: ...

  7. java代码默认保存在哪里,java创建程序时程序保存在什么地方

    程序运行时,我们最好对数据保存到什么地方做到心中有数.特别要注意的是内存的分配.有六个地方都可以保存数据: (1) 寄存器.这是最快的保存区域,因为它位于和其他所有保存方式不同的地方:处理器内部.然而 ...

  8. GNS3模拟器中关于创建vtp时,内存空间不足问题的解决

    使用GNS3模拟器时,创建vtp时,发生了如下错误: 3560-2(vlan)#vtp domain aaa Domain name already set to aaa . 3560-2(vlan) ...

  9. java中new一个对象时具体都发生了什么?

    java是一门面向对象的程序设计语言,在java中一切皆为对象.在java中创建一个新对象的方式有很多种如new+构造方法,克隆,反射,反序列化等.那么当我们new一个对象时,java底层都经过了怎样 ...

最新文章

  1. Java中的I/O模型总结(八股文自述)
  2. 有理有据:一篇来自前端同学对后端接口的吐槽!
  3. mysql和mybatis优化_MySQL + mybatis的SQL优化方案
  4. html标题电脑快速输入,快速把纸上文字输入到电脑中的技巧
  5. linux100day(day8)--shell监控脚本练习
  6. Leetcode之javascript解题(No33-34)
  7. 加密Python脚本
  8. C#学习你需要知道的---(For和Foreach)
  9. Linux shell统计文件数脚本,使用shell脚本巧妙统计文件
  10. mysql获取上周时间戳_php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)...
  11. LitePal使用详解
  12. 数据库管理系统的基本组成
  13. 电脑桌面云便签怎么开启窗口置顶一直让悬浮便签显示在屏幕上?
  14. photoshop柔光模式原理和案例教程
  15. Ubuntu 18.04 安装微信wechat
  16. 数字图像处理实验八--图像分割
  17. 第三方支付4(前端实现支付)
  18. matlab模拟退火算法工具箱下载,Matlab的模拟退火算法工具箱
  19. Hyperledger Fabric 2.3环境配置搭建指南及BUG记录
  20. 静态html无法进行post请求,静态页接收post请求

热门文章

  1. FL Studio教程之如何加载采样
  2. 判断二叉树是否能成为折半查找判定树
  3. 2022年全球与中国PLC光分路器市场现状及未来发展趋势
  4. 【云计算与大数据技术】分布式数据库NoSQL中KV、列式、图、文档数据库的讲解(图文解释 超详细)
  5. Microsoft PlayReady DRM及其工作原理
  6. 一名职业3D建模师的学习经历,月薪28K依然焦虑
  7. 【文摘】《原则》——雷.达里奥
  8. Solid Sphere Inc.:智能手机原创恶搞App“Takeshobo Quest - POP TEAM EPIC ASSAULTS”
  9. 学习AI人工智能,你必须要知道的4件事!
  10. 【DBC专题】-5-DBC文件格式解析