Java类初始化和实例初始化过程
1.类初始化过程
- 一个类要创建实例需要先加载并初始化该类
- main方法所在的类需要先加载和初始化
- 一个子类要初始化需要先初始化父类
- 一个类初始化就是执行<client>()方法(编译器生成的字节码)
- <client>()方法由静态类变量显示赋值代码和静态代码块组成
- 类变量显示赋值代码和静态代码块代码从上到下顺序执行
- <client>()方法只执行一次
2.实例初始化过程
- 实例初始化就是执行<init>()方法
- <init>()方法可能重载有多个,有几个构造器就有几个<init>()方法
- <init>()方法由非静态实例变量显示赋值代码、非静态代码块、对应构造器代码组成
- 非静态实例变量显示赋值代码和非静态代码块代码从上到下顺序执行,而对应构造器代码最后执行
- 每次创建实例对象,调用对应构造器,执行的就是对应的<init>方法
- <init>方法的首行是super()或super(实参),对应父类的<init>方法,即先执行父类实例初始化
- 实例创建了几次,初始化就执行了几次
3.执行顺序
(类初始化过程)
- 爷爷类的静态初始化块 | 静态属性初始化 >
- 父类静态初始化块 | 静态属性初始化 >
- 子类静态初始化块 | 静态属性初始化 >
(实例初始化过程)
- 爷爷类普通初始化块 | 普通属性初始化 > 构造器 >
- 父类普通初始化块 | 普通属性初始化 > 构造器 >
- 子类普通初始化块 | 普通属性初始化 > 构造器
Java类初始化和实例初始化过程的更多相关文章
- Java类的实例化的初始化过程
A a = new A(); new 创建对象过程: 1.类加载 代码验证 2.给对象在内存(堆)中分配空间(给属性赋值): 3.属性赋默认值: byte,short.int,long -&g ...
- Java静态初始化,实例初始化以及构造方法
首先有三个概念需要了解: 一.静态初始化:是指执行静态初始化块里面的内容. 二.实例初始化:是指执行实例初始化块里面的内容. 三.构造方法:一个名称跟类的名称一样的方法,特殊在于不带返回值. 我们先来 ...
- 【基础】java类的各种成员初始化顺序
父子类继承时的静态代码块,普通代码块,静态方法,构造方法,等先后顺序 前言: 普通代码块:在方法或语句中出现的{}就称为普通代码块.普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出 ...
- 关于java中构造方法、实例初始化、静态初始化执行顺序
在Java笔试中,构造方法.实例初始化.静态初始化执行顺序,是一个经常被考察的知识点. 像下面的这道题(刚刚刷题做到,虽然做对了,但是还是想整理一下) 运行下面的代码,输出的结果是... class ...
- JavaSE 面试题: 类初始化和实例初始化等
JavaSE 面试题 类初始化和实例初始化等 class Father { private int i = test(); private static int j = method(); stati ...
- Java 类初始化和实例初始化过程
1.类初始化过程 2.实例初始化过程 3.方法的重写
- 解析Java类和对象的初始化过程
类的初始化和对象初始化是 JVM 管理的类型生命周期中非常重要的两个环节,Google 了一遍网络,有关类装载机制的文章倒是不少,然而类初始化和对象初始化的文章并不多,特别是从字节码和 JVM 层次来 ...
- [转载]解析 Java 类和对象的初始化过程
原文地址:http://www.ibm.com/developerworks/cn/java/j-lo-clobj-init/index.html 由一个单态模式引出的问题谈起 类的初始化和对象初始化 ...
- JAVA类初始化和实例初始化
一.类初始化过程 1.一个类要创建实例需要先创建和加载 (1) main方法所在的类需要先加载和实例化 2.一个子类要初始化,需要先初始化父类 3.一个类初始化就是执行<clinit>方法 ...
随机推荐
- 《python cookbook》学习笔记
2016.5.3 第8章 类与对象 8.1 改变对象的字符串显示 __str__ 和 __repr__ %s 和 %r,提到了eval,我没有用过 8.2 自定义字符串的格式化 __forma ...
- poj 2761 主席树的应用(查询区间第k小值)
Feed the dogs Time Limit: 6000MS Memory Limit: 65536K Total Submissions: 22084 Accepted: 7033 De ...
- 「SDOI2017」硬币游戏
题目链接 问题分析 首先一个显然的做法就是建出AC自动机,然后高斯消元.但是这样的复杂度是\(O(n^3m^3)\)的. 我们发现其实只需要求AC自动机上\(n\)个状态的概率,而其余的概率是没有用的 ...
- ubuntu E: Could not get lock /var/lib/apt/lists/lock 异常信息
转载:https://www.cnblogs.com/qq952693358/p/6537846.html 在更换软件源时遇到了如下问题: sudo apt-get update E: Could n ...
- JPA 开发写SQL时候遇见的困难点
官方文档 https://docs.spring.io/spring-data/jpa/docs/1.11.16.RELEASE/reference/html/#repositories.specia ...
- Java NIO学习
Java NIO(转自:http://www.iteye.com/magazines/132-Java-NIO#585) Java NIO提供了与标准IO不同的IO工作方式: Channels,Buf ...
- 高并发架构系列:Redis为什么是单线程、及高并发快的3大原因详解
Redis的高并发和快速原因 1.redis是基于内存的,内存的读写速度非常快: 2.redis是单线程的,省去了很多上下文切换线程的时间: 3.redis使用多路复用技术,可以处理并发的连接.非阻塞 ...
- DB2基础维护手册
诊断DB2系统性能:db2top -d DEMODB db2top详解:http://blog.sina.com.cn/s/blog_636d62310102v7lm.html
- 全面解读php-正则表达式
一.正则表达式基础内容 注: 1.通用原子: \d : 数字. \D : 除了数字. \w : 数字,字母,下划线.\W : 除了数字,字母,下划线. \s : 空白符 . \S : 除了空白符 ...
- leetcode886可能的二分法
class Solution { public: bool possibleBipartition(int N, vector<vector<int>>& dislik ...