Java静态初始化块的问题

为什么图一在静态初始化块中定义的intd=1在块里输出的是1,在main方法就成了上面的的staticintd=9;,不是都是static状态的嘛,那么块里的定义不就是相... 为什么图一在静态初始化块中定义的int d= 1在块里输出的是1,在main方法就成了上面的的static int d = 9;,不是都是static状态的嘛,那么块里的定义不就是相当于改变了d的赋值吗?为什么图二把块里的int取消掉main就能输出d=1?脑袋要爆炸了.. 展开
 我来答
旅游路上小知识
高粉答主

2020-10-21 · 我是旅行小达人,专注解决旅行中遇到的问题
旅游路上小知识
采纳数:2 获赞数:83099

向TA提问 私信TA
展开全部

1、首先打开电脑上的eclipse软件,配置好jdk的,如下图所示。

2、点击左上角的file,点击new,点击Javaproject,如下图所示。

3、新建一个class文件,自己取名字,勾引main选项,自动调用main方法。

4、然后输入代码arrint[] arr = new int[5]; //动态初始化,在内存中开辟连续的5块空间。

5、这时控制台会出现010[I@15db9742,如下图所示就完成了。

幻形术
2018-07-27 · TA获得超过1261个赞
知道小有建树答主
回答量:994
采纳率:81%
帮助的人:261万
展开全部
有int时表示变量的声明定义,静态块里定义了一个局部变量d,和外面的静态成员d不是同一个量,在静态块作用域里局部变量d屏蔽了静态成员d。main函数里输出的是静态成员d。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
DhoW1F6v
2018-07-28 · 超过23用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:44.9万
展开全部
这个按照正确的理解给你解释一遍:
首先,不用说Testt这个类你可以理解 new 的Leaf,然后Leaf类继承了Root父类,此时注意的是他已经继承了父类Root那么他,必须要先到父类里看是否有构造,如果有那么先执行父类里的构造方法,但是进入父类后,仔细观察:
{
System.out.println(" {
System.out.println("Root的普通初始化块");
}

public Root()
{
System.out.println("Root的无参数构造函数");
}

public Root(String name)
{
this();
System.out.println("Root的带参构造函数"+name);
}
");
}

public Root()
{
System.out.println("Root的无参数构造函数");
}

public Root(String name)
{
this();
System.out.println("Root的带参构造函数"+name);
}
首先解释的是{..... }和构造是一个性质的作用,而且构造的特点就是按照位置先后执行,毋庸置疑首先输出了:
Root的普通初始化块
Root的无参数构造函数
然后第三个构造数据调用性构造没有传参,所以不予执行。
这是回到了Leaf子类模块里,这是就要注意 不是按顺序执行了 为什么呢 ?
因为Tesst类里构造了Leaf,所以先要执行Leaf构造方法
构造方法里执行了super,我想你应该明白 因此输出了:
Root的带参构造函数abc
之后很好理解 按着构造顺序执行 输出了:
Leaf的普通初始化块
Leaf的无参构造函数
OK 希望你能正确理解JAVA 构造过程。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式