慕码人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);
}
}
你创建一个对象时,相当于类的实例化,此时会对类执行一次,当你再创建一个对象时,由于静态初始化块只会执行一次,所以并不会再对类进行实例化了。你这最后面的System.out.println(helloo.age);是输出hello.age,和对类执行时不一样的。(个人看解肯能有误?)
Java入门第二季 升级版
530649 学习 · 6091 问题
相似问题