您的位置:首页 > 编程语言 > Java开发

Java____赋值顺序,调用顺序,内部类衍生问题:赋值和构造器、代码块谁先执行?+4种代码块

2015-10-08 11:51 661 查看
运行顺序为:

1.父类静态块

2.自身静态块

3.父类块

4.父类构造器

5.自身块

6.自身构造器

赋值顺序为:

1.父类的静态变量赋值

2.自身的静态变量赋值

3.父类成员变量赋值

4.父类块赋值

5.父类构造器赋值

6.自身成员变量赋值

7.自身块赋值

8.自身构造器赋值

一、普通代码块

直接在一个方法中出现的{}就称为普通代码块,例子程序如下:

public class CodeDemo01{

public static void main(String[] args){

//普通代码块

{

int x = 10;

System.out.println("x=" + x);

}

int x = 100;

System.out.println("x=" + x);

}

}

二、构造代码块

直接在类中定义的没有加static关键字的代码块{}称为构造代码块,例子程序如下:

public class CodeDemo02{

public CodeDemo02(){

System.out.println("========这是构造方法=========");

}

//这是构造代码块,而且在new对象时,构造代码块优先构造方法执行

{

System.out.println("=========这是构造块!=========");

}

public static void main(String[] args){

new CodeDemo02();

new CodeDemo02();

}

}

三、静态代码块

使用static关键字声明的代码块称为静态代码块,静态块的主要目的是用来为静态属性初始化,例子程序如下:

public class CodeDemo03

{

static{

System.out.println("这是主类中的静态代码块!");

}

public static void main(String[] args){

new Demo();

new Demo();

new Demo();

}

}

class Demo

{

static{

System.out.println("这是Demo类中的静态代码块!");

}

{

System.out.println("这是Demo类中的构造块!");

}

public Demo(){

System.out.println("这是构造方法!");

}

}

静态块优先于主方法的执行,静态块优先于构造方法的执行,而且只执行一次!

四、同步代码块

同步代码块主要出现在多线程中。

由此可以得出,内部类中出现的

先执行private xx = new a();

再执行构造器的情况,不是因为把private xx = new a();当做代码块,而是先赋值!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: