本帖最后由 HM朱蛟 于 2013-3-26 06:41 编辑
总体来说执行优先级:
静态代码块>构造代码块>构造函数
-------------------------------------------------------------------------
static代码块与构造代码块的比较:
1:构造代码块必然是在对象实体建立时才会运行,即进行new操作的时候。
2:静态代码块只需要在类被加载时就运行。
3:无论什么情况,静态代码块总是优先于构造代码块运行。
测试代码:
class Person
{
{
System.out.println("b");
}
static
{
System.out.println("a");
}
static void show()
{
System.out.println("show run");
}
}
class Run
{
public static void main(String [] x)
{
//Person.show();
//Person p = new Person();
Person p = null;
}
}
---------------------------------------------
概念:
构造代码块:用于给所有对象初始化,并且优先于构造函数运行。可以用于共性初始化。
static代码块:什么是静态代码块? Class StaticCode { static { S.o.p(“haha”); } } 特点: 1:随着类的加载而加载 2:只运行一次 3:优先于主函数执行 4:用于初始化类 5:静态代码块只能访问静态成员。
:构造函数:
特点:
_函数名和类名相同
_不用定义返回值
_不能写return语句
PS:当类中没有定义构造函数时,类会自动生成一个空参数的构造函数,若定义了便不会。
作用:
_对对象进行初始化。
_不同构造函数对应不同的对象进行初始化,重载。
_若没有对应的构造函数,对象无法创建。
与一般函数的不同:格式/运行
格式:写法不同。
运行:
_构造函数是在对象建立时候就运行,并且初始化对象,构造函数只运行1次,
_一般函数是对象调用才执行,是给对象增加功能,一般方法可以运行多次
构造函数可以被私有化,私有化的构造函数无法创建与之对应对象,若所有构造函数都私有化了,那么这个类无法创建对象。
|