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

来源:8-10 Java 中的 static 使用之静态初始化块

_天微凉_

2015-02-09 17:28

根据程序运行结果,静态初始化块运行了,结果初始化块没运行,是不是可以说明初始化块在类加载时不执行呢?
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回答

  • Jy_z
    2015-02-09 18:01:56
    已采纳

    你的想法是对的. 

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

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

    _天微凉_

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

    2015-02-09 18:04:31

    共 2 条回复 >

  • _天微凉_
    2015-02-09 18:04:01

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

    _天微凉_ 回复Jy_z

    哦,好的,谢谢。我也单独地提出过这个问题,有人回复了一下,你可以看看 http://www.imooc.com/qadetail/66141

    2015-02-09 20:04:23

    共 4 条回复 >

  • _天微凉_
    2015-02-09 18:03:18

    谢谢啊!

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530649 学习 · 6091 问题

查看课程

相似问题