————下课后————

结论

类的加载顺序。

  • (1) 父类静态代码块(包括静态初始化块,静态属性,但不包括静态方法)
  • (2) 子类静态代码块(包括静态初始化块,静态属性,但不包括静态方法 )
  • (3) 父类非静态代码块( 包括非静态初始化块,非静态属性 )
  • (4) 父类构造函数
  • (5) 子类非静态代码块 ( 包括非静态初始化块,非静态属性 )
  • (6) 子类构造函数

例子1

运行下面代码,输出的结果是()

class A { public A() {//构造函数 System.out.println("class A"); } { //代码块 System.out.println("I'm A class");  } static { //静态代码块 System.out.println("class A static");  }}public class B extends A { public B() {//构造函数 System.out.println("class B"); } { //代码块 System.out.println("I'm B class");  } static { System.out.println("class B static");  } //静态代码块 public static void main(String[] args) { new B(); }}

A

class A static class B static I'm A class class AI'm B class class B

B

class A staticI'm A classclass Aclass B staticI'm B classclass B

C

class A staticclass B staticclass AI'm A class class BI'm B class

D

class A staticclass AI'm A classclass B staticclass BI'm B class

例子2

class Print{ Print(){ System.out.println("haha"); }}public class Cats { static { System.out.println("static Casts"); } static Print test1 = new Print();}class qiaoGeli extends Cats{ public static void main(String [] args) { qiaoGeli t1 = new qiaoGeli(); }}

以上程序输出:

static Castshaha

换一下静态变量和静态代码块的执行顺序。

class Print{ Print(){ System.out.println("haha"); }}public class Cats { static Print test1 = new Print(); static { System.out.println("static Casts"); }}class qiaoGeli extends Cats{ public static void main(String [] args) { qiaoGeli t1 = new qiaoGeli(); }}以上程序输出:hahastatic Casts

例子3

class Print{ Print(){ System.out.println("haha"); }}public class Cats { Print test = new Print(); Cats(){ System.out.println("I'm qiaoGeLi"); } { System.out.println("I'm xiaoMeng"); } public static void main(String [] args) { Cats cat = new Cats(); }}

以上程序输出:

hahaI'm xiaoMengI'm qiaoGeLi

例子4

class Print{ Print(){ System.out.println("haha"); }}public class Cats { Cats(){ System.out.println("I'm qiaoGeLi"); } { System.out.println("I'm xiaoMeng"); } Print test = new Print(); public static void main(String [] args) { Cats cat = new Cats(); }}

以上程序输出:

I'm xiaoMenghahaI'm qiaoGeLi

结论

类的执行顺序。

  • (1)父类静态变量和静态代码块(先声明的先执行);
  • (2)子类静态变量和静态代码块(先声明的先执行);
  • (3)父类的非静态属性(变量)和非静态代码块(先声明的先执行);
  • (4)父类构造函数
  • (5)子类的非静态属性(变量)和非静态代码块(先声明的先执行);
  • (6) 子类构造函数

小萌:乔哥辛苦了,给你按摩!

这篇文章和小编写的一篇原创文章很类似,比这篇文章多了一些内容

让你清清楚楚理解Java中成员变量,代码块,构造函数的加载顺序

作者:乔戈里qgl原文:转载自公众号,程序员乔戈里,已获作者授权

java类初始化顺序_「漫画」Java中的父子类的执行顺序到底是怎么一回事?相关推荐

  1. java 线程间通信方式_「转」JAVA多线程之线程间的通信方式

    1. 同步 这里讲的同步是指多个线程通过synchronized关键字这种方式来实现线程间的通信. public class MyObject { synchronized public void m ...

  2. java继承调用先后_「继承顺序」JAVA继承顺序 - seo实验室

    继承顺序 当使用继承这个特性时,程序是如何执行的: 继承的初始化顺序 1.初始化父类再初始子类 2.先执行初始化对象中属性,再执行构造方法中的初始化 当使用继承这个特性时,程序是如何执行的呢,也就是说 ...

  3. java 平均分配算法_「角平分线」Java 计算角平分线 - seo实验室

    角平分线 有三个点,计算出角平分线.首先要算出两个点之间的方位角,根据方位角算出夹角.下面以角平分线长度是20示例计算. double dStartAngle = Math.atan2(mdE1 - ...

  4. java keyset entryset 顺序_「entryset」如何遍历Map,map的keySet()和EntrySet()区别 - seo实验室...

    entryset 如何遍历Map,map的keySet()和EntrySet()区别 遍历map public static void main(String[] args) { // TODO Au ...

  5. java 过滤器执行图_「filterchain」java 过滤器Filter中chain.doFilter()之前和之后代码的执行顺序 - seo实验室...

    filterchain 过滤器拦截到请求之后,首先是执行doFilter()方法中chain.doFilter()之前的代码,然后放弃权限给下一个过滤器或者serverlet等等,最后才执行chain ...

  6. eclipse折叠if语句块_「03」java中的方法以及控制语句

    语句块(有时叫做复合语句),是用花括号扩起的任意数量的简单Java语句.块确定了局部变量的作用域.块中的程序代码,作为一个整体,是要被一起执行的.块可以被嵌套在另一个块中,但是不能在两个嵌套的块内声明 ...

  7. java tcp权限控制_「图解」TCP重传、滑动窗口、流量控制、拥塞控制

    前言 前一篇35 张图解被问千百遍的 TCP 三次握手和四次挥手面试题得到了很多读者的认可,在此特别感谢你们的认可,大家都暖暖的. 来了,今天又来图解 TCP 了,小林可能会迟到,但不会缺席. 迟到的 ...

  8. java简单编程_「4」Java简单编程

    1.第一个Java程序 ●Java程序开发步骤: ●通过文本编辑器来编写java代码至扩展名为java的文件中. ●调用编译工具javac.exe来对java源文件进行编译,生成扩展名为class的字 ...

  9. OS中关于父子进程的执行顺序和多个子进程之间的执行顺序(整理)

    一. 问: 1.fork出一个子进程,父子进程执行的先后顺序是不确定的,如果先执行父进程,再执行子进程,父进程中没有wait和sleep.问,是否先把父进程执行完,再执行子进程?还是两个进程是一块执行 ...

最新文章

  1. C++ Data语意学
  2. Winform模拟post请求和get请求登录网站
  3. linux系统上手工建库步骤,Linux下Oracle手工建库过程
  4. 如何量化考核技术人的KPI?
  5. Mac升级emacs26
  6. Unity3d使用MeshCollider检测区域
  7. 文后参考文献著录规则 GB/T 7714-2005
  8. 矩阵求导法则与性质,机器学习必备~
  9. js笔记,自封装篇(二)之对象克隆
  10. libvlc.java_java – LibVlc android无法加载库
  11. (7)全民小视频引流脚本模块化开发01-关注用户By飞云脚本学院
  12. 计算机两个活动分区,硬盘无法设置活动分区,硬盘只能有一个活动分区吗
  13. 用od、ce实现植物大战僵尸自动收集阳光
  14. git 如何把master分支代码复制到自己的分支
  15. JVM调优之 -Xms -Xmx -Xmn -Xss
  16. R语言绘制 正态分布参数的负对数似然函数
  17. docker swarm的常用操作
  18. wordpress主题怎样在标签云效果中显示每个标签的文章数?
  19. 奥克兰大学计算机科学硕士,奥克兰大学计算机硕士解析
  20. 高通MDM平台-LK

热门文章

  1. import导入工程时出现error:Description Resource Path Location Type Target runtime com.genuitec.runtime.gener
  2. EOS账户系统(4)账户权限分级
  3. C++ Primer 5th笔记(10)chapter10 泛型算法 :谓词
  4. C++(九)——职工信息管理系统
  5. [HOW TO]-官网拉取Trusty-TEE的代码
  6. python:将32位的16进制数据以二进制/hex/binary的形式写入到文件
  7. linux kernel变长数组使用示例
  8. Linux GCC用法
  9. BeautifulSoup库使用
  10. vector、map 内存释放