`
yaoweinan
  • 浏览: 132917 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

java 静态初始化,动态初始化,以及构造器执行的顺序

    博客分类:
  • j2se
阅读更多
验证程序:
/**
*
*/
package com.test;

/**
* @author Administrator
*
*/
class Prare {
    public static String pra_stic="父类--static";
    public String pra="父类-not static";
    static{
//静态初始化
System.out.println(pra_stic);
System.out.println("父类静态初始化");
    }
    {
//初始化
System.out.println(pra);
System.out.println("父类初始化");
    }
    public Prare(){
System.out.println("父类构造器");
    }
}
public class Sun extends Prare{
    public static String pra_stic="子类--static";
    public String pra="子类-not static";
    static{
//静态初始化
System.out.println(pra_stic);
System.out.println("子类静态初始化");
    }
    {
//初始化
System.out.println(pra);
System.out.println("子类初始化");
    }
    public Sun(){
System.out.println("子类构造器");
    }
    public static void main(String[] args) {
new Sun();
    }
}
输出结果:
父类--static
父类静态初始化
子类--static
子类静态初始化
父类-not static
父类初始化
父类构造器
子类-not static
子类初始化
子类构造器
说明:
运行时先执行父类的静态初始化,在执行子类的静态初始化,在执行父类的变量初始化,在执行父类的构造方法,在执行子类的变量初始化最后执行子类的构造方法
分享到:
评论

相关推荐

    java 静态非静态 字段方法 子类父类构造_初始化顺序!

    System.out.println("父类--静态初始化块"); } // 初始化块 { System.out.println(p_Field); System.out.println("父类--初始化块"); } // 构造器 public Parent() { System.out.println(...

    java面试题-类的初始化顺序.doc

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

    java类中元素初始化顺序详解

    对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器

    JAVA面试题解惑系列

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

    php 静态变量的初始化

    } } 但是php中并没有一个类似java中的静态构造器/静态块的东西,就没有合适的时机对其进行初始化了。 对于共有的成员还有办法解决,例如: class A { static public $child; } A::$child = new B()

    【Java语言基础】初始化块

    文章目录【Java语言基础】初始化块使用初始化块静态初始化块总结代码 【Java语言基础】初始化块 初始化块又称为代码块。属于类中的第四大成员。本质上是一个方法,它也有方法体,但没有方法名,没有参数,没有返回,...

    powermock源码学习 支持模拟静态方法、构造函数、final类和方法、私有方法以及移除静态初始化器的模拟工具

    PowerMock的核心功能在于其能够通过提供定制的类加载器和应用一些字节码操作技巧,实现对静态方法、构造方法、私有方法和final方法的模拟。例如,在进行单元测试时,有时候我们并不希望测试数据进入实际的数据库,...

    Thinking in java4(中文高清版)-java的'圣经'

    显式的静态初始化 5.7.4. 非静态实例初始化 5.8 数组初始化 5.8.1 可变参数列表 5.9 枚举类型 5.10 总结 第6章 访问权限控制 第7章 复用类 第8章 多态 第9章 接口 第10章 内部类 第11章 持有对象 第12章 通过异常...

    杰普学习corejava总结笔记

    2.构造器执行顺序 1.类加载,同时初始化类中静态的属性(赋默认值) 2.执行静态代码块 3.分配内存空间,同时初始化非静态的属性(赋默认值) 4.调用父类构造器(注意调用父类构造器之前已经给父类的非静态的属性显示...

    类初始化和实例初始化1

    实例初始化过程:实例初始化就是执行()方法:()方法可能重载有多个,有几个构造器就有几个方法()方法由非静态实例

    Java并发--final关键字.docx

    而实例变量可以在声明变量的时候给实例变量赋初始值,在非静态初始化块中以及构造器中赋初始值。 类变量有两个时机赋初始值,而实例变量可以有三个时机赋初始值。当final变量未初始化时系统不会进行隐式初始化,会...

    Java 基础核心总结 +经典算法大全.rar

    类的初始化 成员初始化 构造器初始化初始化顺序 数组初始化 对象的销毁 对象作用域 this 和 super 访问控制权限继承 多态组合代理 向上转型static final 接口和抽象类接口 抽象类异常 认 识 Exception 什么是 ...

    Java开发技术大全(500个源代码).

    errorInit.java 演示变量初始化错误的程序 integerExample.java 演示各种整型变量的使用 isPrime.java 判断素数 leapYearByIf.java 用if语句判断闰年 leapYearByLogical.java 用逻辑表达式判断闰年 lowToUpper...

    【04-面向对象(上)】

    •用static修饰的初始化块为静态初始化块,由于是静态的,所以是属于类,当类加载时,就执行静态初始化块 ,  但执行一个子类时,最先执行其最顶层父类的静态初始化, •初始化块是属于实例 的。只要创建一次...

    编程思想下篇

    5.7.3. 显式的静态初始化 5.7.4. 非静态实例初始化 5.8 数组初始化 5.8.1 可变参数列表 5.9 枚举类型 5.10 总结 第6章 访问权限控制 第7章 复用类 第8章 多态 第9章 接口 第10章 内部类 第11章 持有对象 第12章 通过...

    疯狂JAVA讲义

    5.9.3 静态初始化块 162 5.10 本章小结 165 本章练习 165 第6章 面向对象(下) 166 6.1 基本数据类型的包装类 167 6.2 处理对象 170 6.2.1 打印对象和toString方法 170 6.2.2 ==和equals比较运算符 172 6.3...

    Effective C# 使用成员初始化器而不是赋值语句

    无论是类成员(静态变量)合适实例变量,我们都应该充分利用初始化器的语法。 C#编程在,一般在声明一个变量的同时我们会对其进行初始化: 代码如下:1 class Employee 2 { 3 private List<Employee> empList = new ...

    关于JVM的总结

    而在初始化阶段则通过程序制定的主管计划去初始化变量和其他资源,从另一个角度理解就是 执行类构造器的()方法 .()方法是由编译器自动收集类中的所有变量的复制动作和静态语句中的语句合并产生的. 静态语句块中只能...

    c# 类型构造器

    主要作用是:设置类型中静态字段的初始化。类型构造器不一定要在类中定义,但是最多也只能有一个。例: 代码如下: class SomeType{ static SomeType(){} } jit编译器在编译一个方法时,会查看代码引用哪些类型。任何...

Global site tag (gtag.js) - Google Analytics