1. 这是个笔记.####

HelloParent.class

public class HelloParent {

helloY y = new helloY();

static {

System.out.println("parent static block");

}

public HelloParent() {

System.out.println("parent construct");

}

}

HelloChild.class

public class HelloChild extends HelloParent {

helloY y = new helloY();

static {

System.out.println("child static block");

}

public HelloChild() {

System.out.println("child construct");

}

public static void main(String[] args) {

new HelloChild ();

}

}

helloY.class

public class helloY {

helloY() {

System.out.println("this is Y");

}

}

这里我们先看运行的结果是什么:

parent static block

child static block

this is Y

parent construct

this is Y

child construct

2.我简单说下这个过程,如果说得不对,请指出,谢谢.####

这里我们可以看到主函数 main 方法 在 HelloChild.class

所以我们运行 HelloChild.class

当执行new HelloChild()时,由于是 HelloChild 继承了HelloParent 类 ,先执行父类的方法.

1.它首先去看父类里面有没有静态代码块,如果有,它先去执行父类里面静态代码块里面的内容#####

2.再去执行子类(自己这个类)里面的静态代码块#####

3.然后去看父类有没有非静态代码块,如果有就执行父类的非静态代码块#####

4.接着执行父类的构造方法#####

5.紧接着它会去看子类有没有非静态代码块,如果有就执行子类的非静态代码块#####

6.最后去执行子类的构造方法#####

以上是基于本例来讲解的一个对象初始化过程,如果某些方法没有,就不会去执行.

3.一些注意事项####

静态代码块只执行一次

主函数 main 方法

public static void main(String[] args) {

new HelloChild ();

new HelloChild ();

}

这次运行的结果是

parent static block

child static block

this is Y

parent construct

this is Y

child construct

this is Y

parent construct

this is Y

child construct

你们也发现了.静态代码块只会执行一次.

4.总结####

1.如果有些代码必须在项目启动的时候就执行,需要使用静态代码块,这种代码是主动执行的;#####

2.需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的.

3.静态方法在类加载的时候 就已经加载 可以用类名直接调用 . 比如main方法就必须是静态的 这是程序入口#####

4.两者的区别就是:静态代码块是自动执行的;静态方法是被调用的时候才执行,而且不新建对象.#####

欢迎指正.

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

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

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

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

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

  3. java类初始化顺序_Java 类的初始化顺序

    静态代码块:用staitc声明,jvm加载类时执行,仅执行一次 构造代码块:类中直接用{}定义,每一次创建对象时执行 执行顺序优先级:静态块,main(),构造块,构造方法 1. 构造函数 publi ...

  4. java中何时不能实例_Java对象实例是何时被创建

    您可能感兴趣的话题: Java 核心提示:对象实例何时被创建,这个问题也许你用一句话就能回答完了.但是它的潜在陷阱却常常被人忽视,这个问题也许并不像你想的那么简单,不信请你耐心看下去. 对象实例何时被 ...

  5. java类编来那个初始化顺序_java类的初始化顺序

    对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序依次是(静态变量.静态初始化块)>(变量.初始化块)>构造器.我们也可以通过下面的测试代码来验证这一点: public ...

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

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

  7. java对象的内存结构_JAVA 对象内存结构

    JAVA对象内存结构 HotSpot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header).实例数据(Instance Data)和对齐填充(Padding). 对象头 markWo ...

  8. java 对象池 博客_Java对象池技术的原理及其实现的小结

    一起学习 Java对象的生命周期大致包括三个阶段:对象的创建,对象的使用,对象的清除.因此,对象的生命周期长度可用如下的表达式表示:T = T1 T2 T3.其中T1表示对象的创建时间,T2表示对象的 ...

  9. java中存在对多个对象加锁的情况_Java对象锁和类锁全面解析(多线程synchronized关键字)...

    最近工作有用到一些多线程的东西,之前吧,有用到synchronized同步块,不过是别人怎么用就跟着用,并没有搞清楚锁的概念.最近也是遇到一些问题,不搞清楚锁的概念,很容易碰壁,甚至有些时候自己连用没 ...

  10. java对象克隆的例子_Java对象克隆

    本篇文章帮大家学习java对象克隆,包含了Java对象克隆使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. Java不提供克隆(复制)对象的自动机制.克隆对象意味着逐位复制 ...

最新文章

  1. Linux 第60,61天 ansible的playbook
  2. Cocos Creator JS 时间戳日期转换
  3. 使用 autossh 建立反向 SSH 隧道管理个人计算机
  4. ASP.NET MVC+JQueryEasyUI1.4+ADO.NET Demo
  5. 问题 C: 【例2-3】围圈报数
  6. angularjs--控制器的显示与隐示使用
  7. 今年暑假不AC 贪心
  8. spring整合quartz框架
  9. Github-推送代码报错“error:RPC failed;curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL,errno 10054”解决方案
  10. oracle 如何查看一个表属于哪一个数据文件,如何查看某一表空间的数据文件都分布了哪些数据对象...
  11. 【Vegas原创】控制文件损坏,使用trace文件恢复DB
  12. chmod 755 与chmod +x的区别
  13. 安装旧版本gcc的简便方法,软件包管理命令update-alternatives使用
  14. 微信小程序富文本解析点击图片放大_小程序富文本提取图片可放大缩小
  15. C语言 - 输入x的值,输出y相应的值 x (x<1) y= 2x-1 (1≤x<10) 3x-11 (x≥10)
  16. AI人工智能入门(浅析AlphaGo的实现)
  17. matlab在能量守恒中的应用,MATLAB在《大学物理》课程实践教学中的应用分析
  18. echarts蚊香图
  19. 前端 html 的使用手册
  20. 微博国际版 android,新浪微博国际版

热门文章

  1. 【技术学习】一次Node.js站点渗透
  2. win10下c/c++隐藏进程
  3. Centos 7 上 查看MySQL当前使用的配置文件my.cnf的方法
  4. 2、HTML <img>标签(插入图片)
  5. 5、MySQL修改数据库:ALTER DATABASE用法简介
  6. 力扣 136. 只出现一次的数字 【异或运算】
  7. Tomcat启动窗口
  8. 北京计算机在职研究生双证学校,北京在职研究生目前有哪些学校开设了双证专业?...
  9. IDEA 2020 本土化,真的是全中文了,新手,开心了!
  10. (Java)注解和反射