什么是静态初始化块在类加载是只执行一次?

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

慕码人7406720

2020-12-30 17:15

什么是静态初始化块在类加载是只执行一次?我下面最后的几行定义了一个新的对象helloo,但是我尝试打印age的时候,结果还是20。(黑体字部分)



public class HelloWorld {

    

    String name; // 声明变量name

String sex; // 声明变量sex

static int age;// 声明静态变量age

    

    // 构造方法

public HelloWorld   () { 

System.out.println("通过构造方法初始化name");

name = "tom";

}

    

    // 初始化块

System.out.println("通过初始化块初始化sex");

sex = "男";

}

    

    // 静态初始化块

    static    { 

System.out.println("通过静态初始化块初始化age");

age = 20;

}

    

public void show() {

System.out.println("姓名:" + name + ",性别:" + sex + ",年龄:" + age);

}

    

public static void main(String[] args) {

        

        // 创建对象

HelloWorld hello = new HelloWorld();

// 调用对象的show方法

        hello.show();

        HelloWorld helloo = new HelloWorld();

        System.out.println(helloo.age);

        

}

}


写回答 关注

1回答

  • 慕瓜8511740
    2020-12-30 20:28:44
    已采纳

    你创建一个对象时,相当于类的实例化,此时会对类执行一次,当你再创建一个对象时,由于静态初始化块只会执行一次,所以并不会再对类进行实例化了。你这最后面的System.out.println(helloo.age);是输出hello.age,和对类执行时不一样的。(个人看解肯能有误?)

    慕码人740...

    抱歉,我还是不太了解为什么System.out.println(helloo.age);是输出hello.age... 你的意思是说HelloWorld helloo = new HelloWorld();这句其实不起作用是吗?

    2020-12-30 23:44:42

    共 1 条回复 >

Java入门第二季 升级版

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

530649 学习 · 6091 问题

查看课程

相似问题