创建一个对象的过程

首先创建一个People实体类

package com.zhang.java_base.bean;
/**
 * @program:
 * @description:
 * @author: 寻。
 * @create: 2018-06-01 09:54
 **/
public class People {

    private String name ;

    static{
        System.out.println("静态代码块执行。。。");
    }

    {
        System.out.println("构造代码块执行");
    }

    public People(){
        System.out.println("无参构造器执行");
    }

    public static void main(String[] args) {
        People people = new People();
        System.out.println(people);
    }

}

我们这边在main方法中测试下创建对象的过程。

静态代码块执行。。。
构造代码块执行
无参构造器执行
com.zhang.java_base.bean.People@2f92e0f4

因此得出结论:
People people = new People();
这句话都做了什么事情呢?

  1. 因为new用到了People.class,所以会先找到People.class文件并加载到内存中;
  2. 执行该类中的static代码块,如果有的话,给People.class类进行初始化;
  3. 在堆内存中开辟空间,分配内存地址;
  4. 在堆内存中建立对象的特有属性,并进行默认初始化;
  5. 对属性进行显示初始化;
  6. 对对象进行构造代码块初始化;
  7. 对对象进行对应的构造参数初始化;
  8. 将内存地址赋值给栈内存中的people变量;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,877评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,288评论 19 139
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,795评论 8 265
  • 最近在忙着各种面试,笔试,碰到这样的问题比较多,打算在这里记录下自己对两列布局的一些实现方法的总结 下面我将用三个...
    Vonlion阅读 1,184评论 0 1
  • 我记得有一回我跟两位女性朋友在食堂吃饭的时候聊到毕业找工作的问题,她们说能找到一份薪资不错的工作很重要,因为化妆品...
    Denis晓钟阅读 398评论 0 2