注:下列代码中的注释都是JUnit4单元测试运行结果。

首先,没有父类的(父类是Object)的类A

package Static.of;

public class A {

    {
System.out.println("我是父类-----大括号中的代码");
} static{
System.out.println("我是父类-------static代码块");
} public A(){
System.out.println("我是父类A----------的构造方法");
} }
@Test
public void fathClass(){
A a = new A();//父类
/**
* 我是父类-------static代码块
我是父类-----大括号中的代码
我是父类A----------的构造方法
*/
}

由上面运行结果可知:只要没有父类(只有Object作为父类)那么执行顺序:static代码块,大括号,构造方法。

继承A的类B

package Static.of;

public class B extends A {
{
System.out.println("我是子类大括号中的代码");
} static{
System.out.println("我是子类static代码块");
} public B(){
System.out.println("我是子类B的构造方法");
}
}

  继承A的类C

package Static.of;

public class C extends A {
{
System.out.println("我是C类 中的大括号");
} public C (){
System.out.println("我是C中的构造方法");
}
}

 

@Test
public void sonBClass(){
B b = new B();
/**
* 我是父类-------static代码块
我是子类static代码块
我是父类-----大括号中的代码
我是父类A----------的构造方法
我是子类大括号中的代码
我是子类B的构造方法

*/

}

  

@Test
public void sonCClass(){
C c = new C();
/**
* 我是父类-------static代码块
我是父类-----大括号中的代码
我是父类A----------的构造方法
我是C类 中的大括号
我是C中的构造方法
*/
}

  

多态语法创建对象

	@Test
public void polymorphicAB(){
A a = new B();
/**
* 我是父类-------static代码块
我是子类static代码块
我是父类-----大括号中的代码
我是父类A----------的构造方法
我是子类大括号中的代码
我是子类B的构造方法
*/
}
@Test
public void polymorphicAC(){
A a = new C();
/**
* 我是父类-------static代码块
我是父类-----大括号中的代码
我是父类A----------的构造方法
我是C类 中的大括号
我是C中的构造方法
*/ }

  

根据例子总结:
结果是集合{父类static,子类static,父类大括号,父类构造函数,子类大括号,子类构造函数}的一个子集

{}大括号里的是初始化块,这里面的代码在创建java对象时执行,而且在构造器之前!其实初始化块就是构造器的补充,初始化块是不能接收任何参数的,定义的一些所有对象共有的属性、方法等内容时就可以用初始化块了初始化!! 好处是可以提高初始化块的复用,提高整个应用的可维护性。

Java中static代码块,{}大括号代码块,构造方法代码块执行顺序!的更多相关文章

  1. java中的异常以及 try catch finally以及finally的执行顺序

    java中的 try.catch.finally及finally执行顺序详解: 1.首相简单介绍一下异常以及异常的运行情况: 在Java中异常的继承主要有两个: Error和Exception 这两个 ...

  2. Java中继承时静态块,构造块,构造函数的执行顺序

    public class Father { static { System.out.println("Father静态块"); } { System.out.println(&qu ...

  3. Java中static的用法,初始化块

    使用 Arrays 类操作 Java 中的数组语法: Arrays.sort(数组名); 可以使用 sort( ) 方法实现对数组的排序,只要将数组名放在 sort( ) 方法的括号中,就可以完成对该 ...

  4. Java中static块执行时机

    Java中static块执行时机 演示例子 在使用static进行初始化的操作,怎么也执行不了!代码如下: public class StaticDemo { public static final ...

  5. java中static关键字的作用

    java中static关键字主要有两种作用: 第一:为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关. 第二,实现某个方法或属性与类而不是对象关联在一起 简单来说,在Java语言中,s ...

  6. Java学习笔记十七:Java中static使用方法

    Java中static使用方法 一:Java中的static使用之静态变量: 我们都知道,我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立.然而在某些时候,我们更希望该类所有的 ...

  7. Java 中 static 的作用

    static 关键字的作用 在 Java 中 static 关键字有4种使用场景,下面分别进行介绍: 1.static 成员变量 public class Student { // 静态成员变量 pr ...

  8. java中static变量和方法的总结

    转自:http://blog.csdn.net/haobo920/article/details/5921621 java中static变量和方法的总结 java中一切皆是对象 一个类中对象的定义一般 ...

  9. Java中static final 与 final 的区别(转载)

    转自:http://advance0683.iteye.com/blog/1107732 Java中static final 与 final 的区别: 例子: Java代码 import java.u ...

  10. Java中static修饰类的问题

    Java中static修饰类的问题 众所周知,Java中static关键字可以修饰方法与变量: 修饰变量的时候,这个变量属于类变量,可以直接通过类名.变量名来引用. 修饰方法的时候可以直接通过类名.方 ...

随机推荐

  1. JAVA架构师面试题 一

    基础题目 Java线程的状态 进程和线程的区别,进程间如何通讯,线程间如何通讯 HashMap的数据结构是什么?如何实现的.和HashTable,ConcurrentHashMap的区别 Cookie ...

  2. 敏感词文本文件 filtered_words.txt,里面的内容为以下内容,当用户输入敏感词语时,则打印出 Freedom,否则打印出 Human Rights

    敏感词文件内容: 代码: def filtered_words(path='filtered_words.txt'): words = [] with open(path, 'r', encoding ...

  3. ThinkJava-持有对象

    11.3 添加一组元素 在java.util包中的Arrays和Collection类中都有很多实用方讼,可以在一个Collection中添加 一组元素.Arrays.asList()方法接受一个数组 ...

  4. 术语-服务:BaaS

    ylbtech-术语-服务:BaaS BaaS(后端即服务:Backend as a Service)公司为移动应用开发者提供整合云后端的边界服务. 1.返回顶部 1. 中文名:后端即服务 外文名:B ...

  5. 1043 Is It a Binary Search Tree (25 分)

    A Binary Search Tree (BST) is recursively defined as a binary tree which has the following propertie ...

  6. Windows下MySQL免安装版的安装、卸载

    一.安装 1.下载 到MySQL官网http://dev.mysql.com/downloads/mysql/ 下载mysql-5.6.15-win32.zip. 2.拷贝 将mysql-5.6.15 ...

  7. 关于javascript的cookie的封装

    /******************cookie*********************/ /* cookie的组成部分: 名称:唯一值,不区分大小写,必须经过URL编码 值:必须经过URL编码 ...

  8. 6.12-PrepareStatement,JdbcUtil 读取数据库配置文件properties,dao模式

    一.PrepareStatement 防止sql注入 PrepareStatement 是预编译sql语句 更加灵活,更有效率 executeUpdate() 做增删改 executeQuery() ...

  9. ubuntu 18.04下svn的安装与基本命令

    一.安装: apt-get install subversion 二.基本命令 1.将文件checkout到本地目录 svn checkout path(path是服务器 上的目录)例如:svn ch ...

  10. ossim 4.1 安装

    在这说明一下,本人也是第一次安装这东东很多我自己也不懂,只能把自己的安装步骤通过贴图呈现出来了!!!! 我用root用户登录的,顺便查看ip 在浏览器打开网址https://192.168.86.15 ...