静态代码块,构造代码块,构造方法的加载执行顺序研究
来源:互联网 发布:互联网大数据查询 编辑:程序博客网 时间:2024/04/25 09:06
构造代码块是给所有的对象进行初始化,也就是说,所有的对象都会调用同一个代码块。只要对象一创立,就会调用这个代码块。
package com.inphase.construct;
public class Demo {
private static int a = 0;
/*
* 静态代码块随着类被jvm虚拟机加载而加载
*/
static{
a = 10 ;
System.out.println("静态代码块在执行a="+a);
}
/**
* 非静态代码块, 需要创建对象才会随之加载到堆内存
*/
{
a = 8;
System.out.println("非静态代码块(构造代码块)在执行a=" + a);
}
/*
* 空参数构造
*/
public Demo() {
this("调用带参构造方法1,a=" + a);
System.out.println("无参构造方法在执行a=" + a);
}
/**
* 有参构造
* @param n
*/
public Demo(String n) {
this(n, "调用带参构造方法2,a=" + a);
System.out.println("带参构造方法1在执行a=" + a);
}
/**
* 有参数构造
* @param s1
* @param s2
*/
public Demo(String s1, String s2) {
System.out.println(s1 + ";" + s2);
}
public static void main(String[] args) {
Demo demo = null; //JVM加载类进入java虚拟机
System.out.println("下面new一个Test实例:");
demo = new Demo();
}
}
执行构造器(构造方法)的时候,在执行方法体之前存在隐式三步:
1,super语句,可能出现以下三种情况:
1)构造方法体的第一行是this语句,则不会执行隐式三步,
2)构造方法体的第一行是super语句,则调用相应的父类的构造方法,
3)构造方法体的第一行既不是this语句也不是super语句,则隐式调用super(),即其父类的默认构造方法,这也是为什么一个父类通常要提供默认构造方法的原因;
2,初始化非静态变量;
3,构造代码块。
由此可知,构造代码块优先于构造方法的方法体,但是this关键字跟super关键字不能同时出现,而且只能在代码的第一行。如果出现了this关键字,隐式三步就不会执行。
当递归调用多个构造方法的时候,构造代码块只会在最后的(也即方法体第一行不是this语句的)那个构造方法执行之前执行!
阅读全文
0 0
- 静态代码块,构造代码块,构造方法的加载执行顺序研究
- 静态代码块、代码块、构造方法的执行顺序
- 静态代码块、构造代码块、构造方法执行顺序
- 静态代码块,构造代码块,构造方法执行顺序
- 静态代码块、构造代码块、局部代码块、构造方法的执行顺序
- java 静态代码块,构造代码块,构造方法,普通代码块的执行顺序
- 静态代码块,静态方法,构造方法的执行顺序
- 静态代码块、代码块、构造方法、普通方法、static方法、 *静态属性、普通属性的加载顺序、执行顺序
- 静态代码块,代码块,构造方法执行顺序
- 静态代码块、静态变量、构造代码块、构造方法的执行顺序
- java 静态代码块、静态变量、成员变量、构造代码块、构造方法的执行顺序
- java中静态代码块,构造代码块,构造方法,main方法的执行顺序
- 关于类中静态块,静态方法,构造代码块,构造方法的执行顺序
- 静态代码块,代码块,构造函数的执行顺序
- Java子父类间静态代码块、构造代码块、构造方法的执行顺序
- Java子父类间静态代码块、构造代码块、构造方法的执行顺序
- Java静态代码块、构造代码块、构造方法的执行顺序
- java 静态代码块 构造代码块 构造方法的执行顺序
- 14个常用的javaScript正则表达式
- 刷题记录luoguP1972 [SDOI2009]HH的项链
- 最大公约数算法
- 宏定义中的反斜杠"\"和宏定义的细节说明
- STM32控制步进电机实现精确转动
- 静态代码块,构造代码块,构造方法的加载执行顺序研究
- C语言实现C++的封装继承与多态
- 手机ios安卓扫描车牌识别SDK
- 2017年6月,两个手游换皮项目,第六,七
- 第8,9个项目,手游开发,棋牌
- es6 语法结构和列子
- 20170729补充一下Python和Tensorflow的安装过程
- Qt学习-入门1
- 微信公众号文章采集系统---开箱即用