Java中static代码块,{}大括号代码块,构造方法代码块执行顺序!
注:下列代码中的注释都是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代码块,{}大括号代码块,构造方法代码块执行顺序!的更多相关文章
- java中的异常以及 try catch finally以及finally的执行顺序
java中的 try.catch.finally及finally执行顺序详解: 1.首相简单介绍一下异常以及异常的运行情况: 在Java中异常的继承主要有两个: Error和Exception 这两个 ...
- Java中继承时静态块,构造块,构造函数的执行顺序
public class Father { static { System.out.println("Father静态块"); } { System.out.println(&qu ...
- Java中static的用法,初始化块
使用 Arrays 类操作 Java 中的数组语法: Arrays.sort(数组名); 可以使用 sort( ) 方法实现对数组的排序,只要将数组名放在 sort( ) 方法的括号中,就可以完成对该 ...
- Java中static块执行时机
Java中static块执行时机 演示例子 在使用static进行初始化的操作,怎么也执行不了!代码如下: public class StaticDemo { public static final ...
- java中static关键字的作用
java中static关键字主要有两种作用: 第一:为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关. 第二,实现某个方法或属性与类而不是对象关联在一起 简单来说,在Java语言中,s ...
- Java学习笔记十七:Java中static使用方法
Java中static使用方法 一:Java中的static使用之静态变量: 我们都知道,我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立.然而在某些时候,我们更希望该类所有的 ...
- Java 中 static 的作用
static 关键字的作用 在 Java 中 static 关键字有4种使用场景,下面分别进行介绍: 1.static 成员变量 public class Student { // 静态成员变量 pr ...
- java中static变量和方法的总结
转自:http://blog.csdn.net/haobo920/article/details/5921621 java中static变量和方法的总结 java中一切皆是对象 一个类中对象的定义一般 ...
- Java中static final 与 final 的区别(转载)
转自:http://advance0683.iteye.com/blog/1107732 Java中static final 与 final 的区别: 例子: Java代码 import java.u ...
- Java中static修饰类的问题
Java中static修饰类的问题 众所周知,Java中static关键字可以修饰方法与变量: 修饰变量的时候,这个变量属于类变量,可以直接通过类名.变量名来引用. 修饰方法的时候可以直接通过类名.方 ...
随机推荐
- Spring中IOC与DI的的区别
依赖注入的前提: 有IOC的环境,也就是将必须对象的创建权交给了Spring. DI 介绍 Dependency Injection 依赖注入.需要有IOC 的环境,Spring 创建这个类的过程中, ...
- tomcat和servlet的关系
一.什么是servlet? 处理请求和发送响应的过程是由一种叫做Servlet的程序来完成的,并且Servlet是为了解决实现动态页面而衍生的东西.理解这个的前提是了解一些http协议的东西,并且知道 ...
- bzoj3295 动态逆序对
Description 对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数.给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计 ...
- [转]链接中 href='#' 和 href='###' 的区别以及优缺点
本文来自:http://c.jinhusns.com/bar/t-829 链接中 href='#' 和 href='###' 的区别以及优缺点 上一篇 下一篇近乎_问阳 发表于:2013-09-09 ...
- java操作hbase1.3.1的增删改查
我的eclipse程序在windows7机器上,hbase在linux机器上 1,首先在C:\Windows\System32\drivers\etc下面的HOSTS文件,加上linux 集群 2.直 ...
- 〖Python〗-- Django的Form组件
[Django的Form组件] Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 Form类的使 ...
- 网络命令ping/netstat/ipconfig/arp/tracert/nbstat
1.1 Ping命令的使用 ping检测网络故障步骤: ping 127.0.0.1 ping环绕指针检测是否在计算上anzhaung了TCP/IP协议及配置是否正确 ping本机IP这个命令被被送到 ...
- 逆地址解析协议RARP
解决的问题 一般系统启动时,从引导磁盘中获取ip 有些机器没有引导磁盘,如X终端或无盘工作站,则需要采用其他方法来获得IP地址 解决的过程 无盘系统依据RARP协议 从接口卡上读取唯一的硬件地址,然后 ...
- OpenACC Hello World
▶ 在 windows 10 上搭建 OpenACC 环境,挺麻烦 ● 安装顺序:Visual Studio 2015(PGI 编译器不支持 Visual Studio 2017):CUDA Tool ...
- sql 随机取数
Sql server: select top 10 * from 表 order by newid()Access: SELECT top 10 * FROM 表 ORDER BY ...