1 问题

new一个对象简单过程

2 过程

1)类加载过程(第一次使用该类)

先看这个类有没有加载到内存,没有的话下面操作

(1)、加载:类加载器(双亲委派模式)通过全限名读取类的二进制流到jvm内部,存储在运行时内存的方法中,java堆中生成一个代表该类的java.lang.Class对象,作为方法区数据的访问入口

(2)、验证:比如final类不能被继承,final方法不被重写

(3)、准备:为静态变量分配内存,设置初始值等

(4)、解析:将常量池中符号引用转为直接引用

(5)、初始化(先父后子):为静态变量赋值、执行static代码块

上面的(2)(3)(4)阶段合叫为链接阶段。

2)创建对象

(1)、在堆区分配对象所需要的内存:分配内存包括本类和父类,但是不包括静态变量,第一步已经说明了

(2)、对所有实例变量进行默认赋值:将方法区对于的实例变量的定义拷贝一份到堆区,然后进行赋值

(3)、执行初始化代码:先初始化父类然后再初始化子类,初始化之前先执行块代码然后才是构造方法

3 总结

new对象分两个过程,加载并初始化类和创建对象。

Java之new一个对象简单过程相关推荐

  1. Java:new一个对象的过程中发生了什么?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:沉默哥 cnblogs.com/JackPn/p/93861 ...

  2. java基础-- new 一个对象的过程

    java new 一个对象的流程大体如下 public class Person { ​ //静态变量 public static int staicVariabl=1; //成员变量 public ...

  3. java new一个对象的过程中发生了什么

    java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话,就会先通过类的全限定名来加载.加载并初始化类完成后,再进行对象的创建工作. 我们先假设是第一次使用该类,这样的话n ...

  4. java中new一个对象要经历哪些过程

    我们要了解new一个对象经历哪些过程,就要知道new对象之前会做什么事情. 首先Java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话,就会先通过类的全限定名将对象所属的 ...

  5. java方法在java虚拟机中的执行过程

    概述 在之前"Java运行时内存如何分配?"这篇文章中,曾经提到过Java在执行方法时,借助于Java虚拟机栈来实现方法的调用与执行,但具体是如何执行的呢? 本篇文章就主要来解决这 ...

  6. Java回收垃圾的基本过程与常用算法

    目录 一.基本概述 二.垃圾分类 基本背景 举例说明各种引用类型的作用 强引用(Strong Reference) 软引用(Soft Reference) 弱引用(Weak Reference) 虚引 ...

  7. PDD面试题:new一个对象的过程中发生了什么?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:沉默哥 来源:https://url.cn/5V55xBu ...

  8. .net 把一个对象赋值给一个参数_Java:new一个对象的过程中发生了什么?

    作者:沉默哥http://cnblogs.com/JackPn/p/9386182.html java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话,就会先通过类的全限定 ...

  9. 面试官:new一个对象的过程中发生了什么

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群"加入公众号专属技术群 作者:沉默哥 来源:http://uee.me/c3PR6 ...

最新文章

  1. rest-framework 版本控制
  2. DotNet指定文件显示的尺寸
  3. [OSDI 12] PoweGraph: 分布式图并行计算框架 学习总结
  4. linux命令的导入,[导入]Linux基本命令
  5. AsyncHttpClient 源码分析
  6. 利用介质创建额外域控制器
  7. Windows 10开机可以跳过锁屏界面的操作方法
  8. 10款主流的软件测试工具,你用过吗?
  9. 计算机组成原理_计算机组成原理amp;认识Python
  10. CCNA11月20日战报
  11. Java获取resin端口_线上解决Resin服务响应过慢的几个方法
  12. 安装了最新版本的java 用友nc打不开_NC无法安装客户端插件,不能进入用友NC系统登陆界面...
  13. python神器_牛逼啊!一个可以随时随地写Python代码的神器
  14. 【转】无人机故障数据集ALFA: A Dataset for UAV Fault and Anomaly Detection
  15. 清橙A1206 小Z的袜子(莫队算法)
  16. [Swift]语言介绍
  17. EXCEL之工资表转工资条
  18. 完美解决eclipse中文注释错位、缩进、被放大BUG
  19. colorAccent,colorPrimary,colorPrimaryDark做什么的?
  20. U盘启动盘装Linux系统: 以Kali为例

热门文章

  1. .NET Core 如何调试 CPU 爆高?
  2. Windows 11 预览版 Build 22000.120 发布
  3. [005] .NET 的执行模型
  4. 大厂出品免费图标资源站
  5. Blazor带我重玩前端(五)
  6. ASP.NET Core Blazor 初探之 Blazor Server
  7. [推荐]大量 Blazor 学习资源(二)
  8. [ASP.NET Core MVC] 如何实现运行时动态定义Controller类型?
  9. 扎心了,程序员2017到2019经历了什么?
  10. .NET Core 3.0深入源码理解HttpClientFactory之实战