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

初始化块会在类加载时执行吗?

根据程序运行结果,静态初始化块运行了,结果初始化块没运行,是不是可以说明初始化块在类加载时不执行呢?
package com.imooc;
//import com.imooc.Telephone;
public class InitialTelephone {
	int num1;// 声明变量num1
	int num2;// 声明变量num2
	static int num3;// 生命静态变量num3
	public InitialTelephone(){// 构造方法
		num1 = 91;
		System.out.println("通过构造方法为变量num1赋值");
	}
	{// 初始化块
		num2 = 74;
		System.out.println("通过初始化块为变量num2赋值");
	}
	static {// 静态初始化块
		num3 = 84;
		System.out.println("通过静态初始化块为静态变量num3赋值");
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}

程序运行结果:
通过静态初始化块为静态变量num3赋值

正在回答

3 回答

你的想法是对的. 

静态初始化块static{}在类加载就会被执行

非静态初始化块{} 得定义对象后才会执行 Telphone p = new Telphone();

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

_天微凉_ 提问者

非常感谢!
2015-02-09 回复 有任何疑惑可以回复我~
#2

_天微凉_ 提问者

那如何在一个java文件中,使用两个同名的类呢? 如果要使用这两个不同包的类,首先要导入包,比如导入import com.Demo;和import com.imooc.Demo;会在第二个包的位置提示错误,这该怎么解决呢?
2015-02-09 回复 有任何疑惑可以回复我~

 那如何在一个java文件中,使用两个同名的类呢? 如果要使用这两个不同包的类,首先要导入包,比如导入import com.Demo;和import com.imooc.Demo;会在第二个包的位置提示错误,这该怎么解决呢?

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

Jy_z

一个java文件中可以有任意多个类,接口或是注解..但是只能有一个类是public的,而且这个类的名字要和文件同名,比如public类名为A则文件名就应当为A.java
2015-02-09 回复 有任何疑惑可以回复我~
#2

_天微凉_ 提问者 回复 Jy_z

不好意思,问题没有问清楚,如果main方法在A包a类中,B包和C包各有一个类,且这两个类同名,那有没有办法在a类中同时使用这两个同名的类啊?
2015-02-09 回复 有任何疑惑可以回复我~
#3

Jy_z 回复 _天微凉_ 提问者

不好意思啊。我也才学到第三季,这个情况我也不太了解。我会关注你的问题,同样希望有高手来解答。
2015-02-09 回复 有任何疑惑可以回复我~
#4

_天微凉_ 提问者 回复 Jy_z

哦,好的,谢谢。我也单独地提出过这个问题,有人回复了一下,你可以看看 http://www.imooc.com/qadetail/66141
2015-02-09 回复 有任何疑惑可以回复我~
查看1条回复

谢谢啊!

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

举报

0/150
提交
取消

初始化块会在类加载时执行吗?

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