微信公众号:努力编程的小猪
如有问题或建议,请公众号留言

Java类初始化顺序说明

一个类中包含如下几类东西,他们前后是有顺序关系的

  1. 静态属性:static 开头定义的属性
  2. 静态方法块: static {} 圈起来的方法块
  3. 普通属性: 未带static定义的属性
  4. 普通方法块: {} 圈起来的方法块
  5. 构造函数: 类名相同的方法
  6. 方法: 普通方法

初始化顺序

public class LifeCycle {
// 静态属性
private static String staticField = getStaticField();
// 静态方法块
static {
System.out.println(staticField);
System.out.println("静态方法块初始化");
System.out.println("Static Patch Initial");
}
// 普通属性
private String field = getField();
// 普通方法块
{
System.out.println(field);
System.out.println("普通方法块初始化");
System.out.println("Field Patch Initial");
}
// 构造函数
public LifeCycle() {
System.out.println("构造函数初始化");
System.out.println("Structure Initial ");
} public static String getStaticField() {
String statiFiled = "Static Field Initial";
System.out.println("静态属性初始化");
return statiFiled;
} public static String getField() {
String filed = "Field Initial";
System.out.println("普通属性初始化");
return filed;
}
// 主函数
public static void main(String[] argc) {
new LifeCycle();
}
}

执行结果:

静态属性初始化
Static Field Initial
静态方法块初始化
Static Patch Initial
普通属性初始化
Field Initial
普通方法块初始化
Field Patch Initial
构造函数初始化
Structure Initial

总结:包含父子类和接口类

普通类:
  • 静态变量
  • 静态代码块
  • 普通变量
  • 普通代码块
  • 构造函数
继承的子类:
  • 父类静态变量
  • 父类静态代码块
  • 子类静态变量
  • 子类静态代码块
  • 父类普通变量
  • 父类普通代码块
  • 父类构造函数
  • 子类普通变量
  • 子类普通代码块
  • 子类构造函数
抽象的实现子类: 接口 - 抽线类 - 实现类
  • 接口静态变量
  • 抽象类静态变量
  • 抽象类静态代码块
  • 实现类静态变量
  • 实习类静态代码块
  • 抽象类普通变量
  • 抽象类普通代码块
  • 抽象类构造函数
  • 实现类普通变量
  • 实现类普通代码块
  • 实现类构造函数
接口注意:
  • 声明的变量都是静态变量并且是final的,所以子类无法修改,并且是固定值不会因为实例而变化
  • 接口中能有静态方法,不能有普通方法,普通方法需要用defalut添加默认实现
  • 接口中的变量必须实例化
  • 接口中没有静态代码块、普通变量、普通代码块、构造函数

【知识总结】Java类初始化顺序说明的更多相关文章

  1. Java提高篇——静态代码块、构造代码块、构造函数以及Java类初始化顺序

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

  2. Android(java)学习笔记136:Java类初始化顺序

    Java类中初试化的顺序: 由此得出Java普通类初始化顺序结论: 静态变量 静态初始化块 变量 初始化块 构造器 由此得出Java继承类初始化顺序结论:     1 .继承体系的所有静态成员初始化( ...

  3. Android(java)学习笔记78:Java类初始化顺序

    1. Java类中初试化的顺序: 由此得出Java普通类初始化顺序结论: (1)静态变量 (2)静态初始化块 (3)变量 (4)初始化块 (5)构造器 由此得出Java继承类初始化顺序结论: (1)继 ...

  4. java类初始化顺序

    一.概述 了解类的初始化顺序,可以更灵活.方便的构造一个类. 二.类初始化顺序 2.1 示例 public class InitialOrderTest { public static void ma ...

  5. 转!!关于java类初始化顺序

    原文地址:http://www.cnblogs.com/luckygxf/p/4796955.html 1.没有继承 静态变量->静态初始化块->变量->变量初始化块->构造方 ...

  6. Java类初始化顺序,大神3个示例带你躺坑。。

    最近发现微信群里面有些群友在讨论类的初始化顺序,如类的静态变量.成员变量.静态代码块.非静态代码块.构造器,及继承父类时,它们的初始化顺序都是怎样的,下面我通过例子来说明这个情况,以免被人误导. 示例 ...

  7. Java类初始化顺序问题

    main -> (静态变量.静态代码块) ->main函数体 -> (类变量.初始化块.实例化引用的类) -> 构造函数 初始化块与实例化引用的类 的调用顺序 按程序的编写上下 ...

  8. Java 类初始化顺序

    总的来说: 父类静态代码块->子类静态代码块->子类main()方法->父类构造块->父类构造方法->子类构造块->子类构造方法 注意,就算是静态的方法也需要调用才 ...

  9. Java类初始化

    Java类初始化 成员变量的初始化和构造器 如果类的成员变量在定义时没有进行显示的初始化赋值,Java会给每个成员变量一个默认值 对于  char.short.byte.int.long.float. ...

随机推荐

  1. OpenGL 4.0 GLSL 基础教程概览——VAO和VBO常用操作接口

    (一) OpenGL  4.3 最新渲染管线图 从OpenGL 2.0 到 OpenGL 3.0变化非常大,但从OpenGL 3.0 到OpenGL 4.0 变化不是太大. 着色器程序直接运行在GPU ...

  2. 《C++ Primer Plus》10.3 类的构造函数和析构函数 学习笔记

    10.3.1 声明和定义构造函数构造函数原型:// constructor prototype with some default argumentsStock(const string &c ...

  3. PHP关于验证

    验证身份证号码 /** * 验证身份证号 * @param $vStr * @return bool */ private function _isCreditNo($vStr) { $vCity = ...

  4. Promise、async、await在Egret的简单应用

    Egret Engnie 5.1.10 Egret Wing 4.1.5 一.Promise.async.await相关知识 Promise介绍 阮一峰 async函数 阮一峰 具体和详细的说明用法可 ...

  5. iOS 根据经纬度计算与地理北极夹角

    http://www.aiuxian.com/article/p-2767848.html #define toDeg(X) (X*180.0/M_PI) /**  * @method 根据两点经纬度 ...

  6. Intellij IDEA同时打开多个项目

    extends:http://www.kaifazhe.me/java/99.html 使用eclipse习惯的同学知道是可以同时多个项目查看的,只需要import就可以了,但Intellij IDE ...

  7. javaWeb中的文件上传下载

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...

  8. 6.IIs部署与发布

    A.网站的发布步骤: 1.首先要选择要发布的网站(即项目里的网站)也就是代码. 2.左键选择发布. 3.配置文件:Web.congig. 4.连接:publis method:File System, ...

  9. rac库grid目录权限(6751)导致数据库宕机案例 此方法仅用于紧急救助

    问题: 我的rac环境不小心通过chown命令改变了/u01目录及其子目录的权限,导致rac节点2数据库宕掉,sqlplus下打开数据库报错如下: [oracle@node2 ~]$ sqlplus ...

  10. RSA算法原理与加密解密 求私钥等价求求模反元素 等价于分解出2个质数 (r*X+1)%[(p-1)(q-1)]=0

    Rsapaper.pdf http://people.csail.mit.edu/rivest/Rsapaper.pdf [概述Abstract 1.将字符串按照双方约定的规则转化为小于n的正整数m, ...