初始化顺序:

1.有无父类?

有:

将父类加载进内存。直到将所有的父类加载完毕。再从顶层父类按照代码的顺序执行静态代码,执行完最顶层的,在执行下一层的,依次类推,直到执行完所有的静态代码。

(1)如果有初始化子类对象。那么同样会先调用父类的构造器,并且会先执行最底层父类的构造器。

先将所有成员属性设置成为默认值,接着依据代码的顺序初始化所有成员。初始化完毕之后,再执行构造器内的方法。初始化完父类后,依次初始化子类的。

无:

那么接下来的步骤跟(1)处的处理方式是一样的。

下面给出例子:

package org.csp.test;

public class Test extends Insect{

private int k = printInit("Test initialized"); ----(11),类似的要先被清0,然后再调用printInit()方法

public Test() {

System.out.println("k ="+k); ---(12) 初始化属性后,执行构造器内的代码

System.out.println("j ="+j); ----(13)

}

private static int x2 = printInit("Test X2 initialized"); ---(3)因为是静态成员

public static void main(String[] args) {

System.out.println("haha"); ---(4)

Test t = new Test(); ---(5)创建对象,接下去要初始化成员对象,但是要先初始化父类的

}

}

class Insect {

------(7)先将所有的成员设置为默认值

private int i =9 ; -----(7)先被设置为默认值0 -----(8) 按照代码顺序初始属性

protected int j; -----(7)被设置为默认值0

static{

System.out.println("hahaaaa");

} **----(1)最先执行**

Insect() {

System.out.println("i = "+i+",j = "+j); ----(9) 执行构造器内的代码

j=39; ------(10)此处已经将父类初始化完毕,返回去初始子类对象

}

private static int x1= printInit("static Insect.X1 initialized"); ----(2)

static int printInit(String s) {

System.out.println(s);

return 47;

}

}

执行结果

hahaaaa

static Insect.X1 initialized

Test X2 initialized

haha

i = 9,j = 0

Test initialized

k =47

j =39

java对象的初始化顺序_Java对象初始化顺序相关推荐

  1. java 对象初始化过程_Java——对象初始化顺序使用详解

    一. 代码块的概念 在探究对象初始化顺序之前,我们先通过代码来了解一下代码块的概念. class Test{ public static String str1; //静态字段 public Stri ...

  2. java初始化实例化_Java对象的创建过程:类的初始化与实例化

    一.Java对象创建时机 我们知道,一个对象在可以被使用之前必须要被正确地实例化.在Java代码中,有很多行为可以引起对象的创建,最为直观的一种就是使用new关键字来调用一个类的构造函数显式地创建对象 ...

  3. java项目包创建顺序_java程序初始化的顺序

    来自:http://blog.csdn.net/socoolfj/article/details/750425   http://www.cnblogs.com/miniwiki/archive/20 ...

  4. java成员初始化顺序_Java成员初始化顺序

    1. 初始化顺序 在类的内部,变量定义的先后顺序决定了初始化的顺序.即使变量散布于方法定义之间,他们仍会在任何方法(包括构造器)被调用之前初始化. 2. 静态成员初始化顺序 1⃣️初始化类的静态成员或 ...

  5. java 静态传值到构造器_java 静态初始化块,初始化块,构造器执行顺序

    public class Test1 { static{ System.out.println("执行静态初始化块test1..."); } { System.out.printl ...

  6. java初始化实例化_Java 类初始化和实例化以及多态理解

    前言 本篇主要讲解了类的初始化.实例化.静态代码块.构造器.getClass().super.this 等相关的知识点,做一个总结. demo 老规矩,看代码: Father.java public ...

  7. java创建变量的过程_java 对象的创建过程

    初始化的顺序首先是static(如果它们尚未由前一次对象创建初始化,也就是new对象的时候,只执行一次static变量初始化),变量初始化顺序有变量在类的定义顺序决定的: 对象的创建过程,以Dog类为 ...

  8. java对象什么时候回收_Java对象的生命周期与垃圾回收以及四种引用

    创建对象的方式用new语句创建对象. 使用反射,调用java.lang.Class或java.lang.reflect.Constructor的newInstance()实例方法. 调用对象的clon ...

  9. java类的初始化方法_JAVA类初始化和实例初始化

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

最新文章

  1. python数据库模块_十二、Python高级功能之Mysql数据库模块
  2. 谷歌砸出10亿美元,要为湾区困难群众,建2万套经适房
  3. Hadoop学习之HDFS
  4. python实现Trie 树+朴素匹配字符串+RK算法匹配字符串+kmp算法匹配字符串
  5. MySQL常用函数 二
  6. [原创]jQuery Validation范例
  7. 计算机组成原理-王道习题1
  8. python字典实例简单代码_python编程入门九:字典实例代码
  9. 科技创新全球资本财富盛会暨联盟系统2.0启动大会圆满举行
  10. 华为SmartKit工具下载
  11. 直播入口地址的数据库修改
  12. 《深入理解分布式事务》,初识分布式......
  13. CAD机械图纸转PNG图片怎么设置输出的色彩和背景颜色—迅捷CAD转换器
  14. [MySQL] 浅谈InnoDB存储引擎
  15. 华为离职副总徐家骏给任正非的辞职信,振聋发聩
  16. HDU1435 Stable Match 【稳定婚姻问题】
  17. 看看阿里、字节跳动、华为等这些大厂的年终奖都发了多少
  18. 人世温情:100个程序员的十年故事(上)
  19. ROC曲线绘制相关R包下载和安装方式
  20. quartz cron表达式在线生成

热门文章

  1. 2015年十佳IDC评选结果:50强名单揭晓
  2. VNC下安装Oracle报错--Could not execute auto check for display colors
  3. 并行博弈树搜索算法-第6篇 百花齐放:各种并行Alpha-Beta算法
  4. BCH将在新支付协议下不断奋进
  5. 纽约州金融服务局(NYDFS)为比特币现金(BCH)打开绿灯
  6. 2019年5月12日-linux就该这么学-第6课
  7. 小程序的生命周期函数?
  8. Asp.net MVC 示例项目Suteki.Shop分析之---结束篇
  9. 中国二维码应用被国外标准垄断 信息安全问题频发
  10. 多线程番外之真假*程