面向对象(静态代码块)-第15天

时间:2022-08-28 00:16:28

面向对象(静态代码块)

格式:

static

{

静态代码块中的执行语句。

}

 

特点:随着类的加载而执行,只执行一次。并优先于主函数

用于给类进行初始化的。

class StaticCode

{

static

{

system.out.println("a");

}

}

 

class StaticCodeDemo

{

static

{

system.out.println("b"); //1先打印b

}

public static void main(String[] args)

{

new StaticCode();//2打印a。只执行一次类StaticCode中的静态代码块

new StaticCode();//这次不打印

system.out.println("over");

}

//打印:

b

a

 

例子2:

class StaticCode

{

static

{

system.out.println("a");//1打印a

}

public staticvoid show()

{

system.out.println("showrun");//2打印show run

}

}

 

class StaticCodeDemo

{

static

{

}

public static void main(String[] args)

{

StaticCode.show();//静态,类名调用

}//当主函数也有静态代码块

static

{

system.out.println("c");//3然后打印c

}

}

//打印:

a

show run

c

 

例子3:

class StaticCode

{

StaticCode()

{

system.out.println("b");

}

static

{

system.out.println("a");

}

{//匿名代码块,也是随着类的加载而加载

system.out.println("c");

}

StaticCode(int x)

{

system.out.println("d");

}

public static void show()

{

system.out.println("show run");

}

}

 

class StaticCodeDemo

{

static

{

}

public static void main(String[] args)

{

new.StaticCode(4);

}

static

{

}

}

//打印

a

c

d

 

例子4:

class StaticCode

{

int num=9;

StaticCode()//构造函数

{

system.out.println("b");

}

Static//静态

{

system.out.println("a"+num);//编译错误。静态成员无法引用非静态成员num

}

}

 

例子5:

class StaticCode

{

int num=9;

StaticCode()//构造函数

{

system.out.println("b");

}

Static//静态代码块

{

system.out.println("a");

}

{//代码块

system.out.println("c"+this.num);//引用本类成员中的num,但是代码块优先于主函数存在,优先于int num=8;故此时this.num,默认值为空。

}

StaticCode(int x)

{

system.out.println("d");

}

}

 

class StaticCodeDemo

{

static

{

}

public static void main(String[] args)

{

new.StaticCode(4);

}

//打印

a

c

d