为了账号安全,请及时绑定邮箱和手机立即绑定

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

什么是静态初始化块在类加载是只执行一次?我下面最后的几行定义了一个新的对象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 回答

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

0 回复 有任何疑惑可以回复我~
#1

慕码人7406720 提问者

抱歉,我还是不太了解为什么System.out.println(helloo.age);是输出hello.age... 你的意思是说HelloWorld helloo = new HelloWorld();这句其实不起作用是吗?
2020-12-30 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信