问答详情
源自:8-10 Java 中的 static 使用之静态初始化块

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

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

提问者:_天微凉_ 2015-02-09 17:28

个回答

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

    你的想法是对的. 

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

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

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

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

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

    谢谢啊!