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

来源:互联网 发布:双色球黄金分割算法 编辑:程序博客网 时间:2024/05/20 02:30

运行顺序为:

    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();当做代码块,而是先赋值!

0 0
原创粉丝点击