大佬给我解释一下我下面的问题 谢谢

package Practise;


public class Java2110 {

String name;

String sex;

static int age;

public Java2110(){

name = "tom";

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

}

{

sex = "男";

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

}

static{

age = 20;

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

}

/* public static void main(String[] args){

Java2110 hello = new Java2110();

System.out.println("姓名:"+hello.name+",");

System.out.println("性别:"+hello.sex+",");

System.out.println("年龄:"+age);

Java2110 hello2 = new Java2110();

}

*/

public void AA() {

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

}

public static void main(String[] args){

Java2110 hello = new Java2110();

}

}


为什么答案是:

通过静态初始化块初始化age

通过初始化块初始化sex

通过构造方法初始化name

需要输出的答案是:

通过静态初始化块初始化age

通过初始化块初始化sex

通过构造方法初始化name

姓名:tom,性别:男,年龄:20

我只是把赋值语句放在了输出语句前面了而已(加黑部分),为什么就出现这样的情况了,大佬能给我解释一下原因吗?

不会游泳的小鲸鱼
浏览 1433回答 3
3回答

北顾岛城

你main方法里光创建了那个对象,也没调用它的AA方法输出啊。

小卢子_31

AA() 方法你不调用吗,你不输出则么得到值

_夕晨踏雪

问题描述的不是很清楚,但是静态初始化块是在类第一次被载入内存中执行的,比其他大的都要早
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java