这代码的执行顺序是什么?先写给num1赋值,然后给num2赋值,最后给num3赋值,可是执行结果却是倒过来的?

来源:8-10 Java 中的 static 使用之静态初始化块

慕粉0915048541

2017-01-14 11:47

package demo;

public class Test{

int num1;

int num2;

static int num3;

public Test(){

num1=91;

System.out.println("通过构造方法给num1赋值");

    }

{num2=74;

System.out.println("通过初始化块给num2赋值");

}

static{

num3=83;

System.out.println("通过静态初始化块给静态变量num3赋值");

}


public static void main(String[] args){

Test hi=new Test();

System.out.println("num1= "+hi.num1);

    System.out.println("num2= "+hi.num2);

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

    hi.num1=18;

    hi.num2=33;

    num3=88;

    System.out.println("赋值后"+"num1= "+hi.num1+" num2= "+hi.num2+" num3= "+num3);

    Test hi2=new Test();

    System.out.println("初始化后"+"num1= "+hi2.num1+" num2= "+hi2.num2+" num3= "+num3);}

}


写回答 关注

2回答

  • rowee
    2017-01-14 12:35:17
    已采纳

    静态代码块在非静态代码块之前执行(静态代码块-->非静态代码块-->构造函数)。

    慕粉0915...

    非常感谢!

    2017-01-14 13:12:02

    共 1 条回复 >

  • 雪姬把酒当歌
    2017-01-14 12:35:06

    程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

531238 学习 · 6327 问题

查看课程

相似问题