1.类初始化过程

  • 一个类要创建实例需要先加载并初始化该类
  • main方法所在的类需要先加载和初始化
  • 一个子类要初始化需要先初始化父类
  • 一个类初始化就是执行<client>()方法(编译器生成的字节码)
  • <client>()方法由静态类变量显示赋值代码和静态代码块组成
  • 类变量显示赋值代码和静态代码块代码从上到下顺序执行
  • <client>()方法只执行一次

2.实例初始化过程

  • 实例初始化就是执行<init>()方法
  • <init>()方法可能重载有多个,有几个构造器就有几个<init>()方法
  • <init>()方法由非静态实例变量显示赋值代码、非静态代码块、对应构造器代码组成
  • 非静态实例变量显示赋值代码和非静态代码块代码从上到下顺序执行,而对应构造器代码最后执行
  • 每次创建实例对象,调用对应构造器,执行的就是对应的<init>方法
  • <init>方法的首行是super()或super(实参),对应父类的<init>方法,即先执行父类实例初始化
  • 实例创建了几次,初始化就执行了几次

3.执行顺序

(类初始化过程)

  • 爷爷类的静态初始化块 | 静态属性初始化 >
  • 父类静态初始化块 | 静态属性初始化 >
  • 子类静态初始化块 | 静态属性初始化 >

(实例初始化过程)

  • 爷爷类普通初始化块 | 普通属性初始化 > 构造器 >
  • 父类普通初始化块 | 普通属性初始化 > 构造器 >
  • 子类普通初始化块 | 普通属性初始化 > 构造器

Java类初始化和实例初始化过程的更多相关文章

  1. Java类的实例化的初始化过程

    A a = new A(); new 创建对象过程: 1.类加载     代码验证 2.给对象在内存(堆)中分配空间(给属性赋值): 3.属性赋默认值: byte,short.int,long -&g ...

  2. Java静态初始化,实例初始化以及构造方法

    首先有三个概念需要了解: 一.静态初始化:是指执行静态初始化块里面的内容. 二.实例初始化:是指执行实例初始化块里面的内容. 三.构造方法:一个名称跟类的名称一样的方法,特殊在于不带返回值. 我们先来 ...

  3. 【基础】java类的各种成员初始化顺序

    父子类继承时的静态代码块,普通代码块,静态方法,构造方法,等先后顺序 前言: 普通代码块:在方法或语句中出现的{}就称为普通代码块.普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出 ...

  4. 关于java中构造方法、实例初始化、静态初始化执行顺序

    在Java笔试中,构造方法.实例初始化.静态初始化执行顺序,是一个经常被考察的知识点. 像下面的这道题(刚刚刷题做到,虽然做对了,但是还是想整理一下) 运行下面的代码,输出的结果是... class ...

  5. JavaSE 面试题: 类初始化和实例初始化等

    JavaSE 面试题 类初始化和实例初始化等 class Father { private int i = test(); private static int j = method(); stati ...

  6. Java 类初始化和实例初始化过程

    1.类初始化过程 2.实例初始化过程 3.方法的重写

  7. 解析Java类和对象的初始化过程

    类的初始化和对象初始化是 JVM 管理的类型生命周期中非常重要的两个环节,Google 了一遍网络,有关类装载机制的文章倒是不少,然而类初始化和对象初始化的文章并不多,特别是从字节码和 JVM 层次来 ...

  8. [转载]解析 Java 类和对象的初始化过程

    原文地址:http://www.ibm.com/developerworks/cn/java/j-lo-clobj-init/index.html 由一个单态模式引出的问题谈起 类的初始化和对象初始化 ...

  9. JAVA类初始化和实例初始化

    一.类初始化过程 1.一个类要创建实例需要先创建和加载 (1) main方法所在的类需要先加载和实例化 2.一个子类要初始化,需要先初始化父类 3.一个类初始化就是执行<clinit>方法 ...

随机推荐

  1. Makefile样例

    Makefile1 src = $(wildcard ./*cpp) obj = $(patsubst %.cpp, %.o,$(src)) target = test $(target) : $(o ...

  2. linux环境下写C++操作mysql(二)

    main.cpp #include<stdio.h> #include<stdlib.h> #include"mysqlInterface.h" int m ...

  3. 分享几个免费IP地址查询接口(API)

    淘宝IP地址库 提供的服务包括:1. 根据用户提供的IP地址,快速查询出该IP地址所在的地理信息和地理相关的信息,包括国家.省.市和运营商.2. 用户可以根据自己所在的位置和使用的IP地址更新我们的服 ...

  4. STS(Spring tool suite)集成配置jdk,maven和Tomcat

    STS是spring官网的一个集成开发工具,最近在学springboot,所以用了. 在本文中将介绍如下内容: 搭建开发的 JDK(1.8) 环境. 配置 Maven 环境. 配置 Tomcat 环境 ...

  5. Java并发编程的艺术笔记(八)——线程池

    一.线程池的主要处理流程 ThreadPoolExecutor执行execute方法分下面4种情况. 1)如果当前运行的线程少于corePoolSize,则创建新线程来执行任务(注意,执行这一步需要获 ...

  6. android 播放音乐媒体文件(四)

    mMediaPlayer 播放网络mp31.异步准备使用 mMediaPlayer.prepareAsync(); 2.监听prepareAsync结果使用MediaPlayer.OnPrepared ...

  7. 线性回归和正则化(Regularization)

    python风控建模实战lendingClub(博主录制,包含大量回归建模脚本和和正则化解释,2K超清分辨率) https://study.163.com/course/courseMain.htm? ...

  8. HTML+CSS实现导航栏二级下拉菜单完整代码

    工具是vs code 代码如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset ...

  9. OpenStack 制作image,启动VM,无console log

    OpenStack image 制作官方文档:https://docs.openstack.org/image-guide/create-images-manually.html 如果通过制作的镜像启 ...

  10. nfs服务安装部署测试

    nfs:网络文件系统作用:某个文件或目录共享,使其它用户可以通过网络访问此共享目录或文件.***特别注意共享的目录权限1.使用nfs需要先安装 yum install -y nfs-utils rpc ...