1、可以在不进行类变量声明并初始化的情况下,使用某类中的一些变量。
2、使类在声明被载入的同时,位于static中的初始化也同时完成。
3、在一些工厂类中,可以为全局提供一个唯一的对象句柄,而这个句柄在程序执行起来以后,就是构造好的,直接拿来就可以用。——这是静态方法代替构造函数最常见的用法。
缺点也很多。
1、一旦静态方法中的代码在载入中出现了错误,应用程序可能连正常初始化都无法完成。而使用构造函数的话,一般不会发生这个问题。
2、不灵活。构造函数可以在参数上进行控制,使类对象能满足不同的需要,静态函数初始化的方式很难满足这点。
3、使用范围较窄,通常只用在工厂函数中。
4、静态构造方式只在编译时由虚拟机执行一次,程序员不能手动调用,而构造函数可以在任何时候由程序员手动调用。
补充:一楼没明白楼主的意思。楼主是说这样的函数:
public class A{
static{
}
}
位于static后面大括号中的代码区域叫做静态代码块,这个代码块程序员是没法手动调用的。