java修炼—static修饰的代码段

来源:互联网 发布:有注册码的软件 编辑:程序博客网 时间:2024/06/06 13:19

找工作进行了一个多月了,还是没拿到一个offer,但是不会放弃,抓紧时间努力学习!总是有我的工作的。

在笔试的时候,曾经遇到过在类中用static修饰的代码段,如下面的类所示:

<pre name="code" class="java">public class myclas {private int ivar1;static {System.out.println("staic fregement");}myclas(){ivar1=333;}public void showsss(){System.out.println("ivar1是"+ivar1);}static void staicExampeFunction(){System.out.println("staicExampeFunction");}}


static修饰的代码段,何时执行呢?

1)在实例化一个对象的时候会被执行一次,且,仅仅在第一次实例化一个对象的时候执行

public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("下面会有输出吗?");myclas myvar1=new myclas();//这个时候会直接调用static代码块System.out.println("下面会有输出吗?");myclas myvar2=new myclas();}

结果:

下面会有输出吗?
staic fregement
下面会有输出吗?

2)在没实例化之前,用类名直接调用静态函数,也会被被执行:

public static void main(String[] args) {// TODO Auto-generated method stubmyclas.staicExampeFunction();//这个之前会调用static代码块System.out.println("下面会有输出吗?");myclas myvar1=new myclas();System.out.println("下面会有输出吗?");myclas myvar2=new myclas();}

结果:

staic fregement
staicExampeFunction
下面会有输出吗?
下面会有输出吗?

总结:无论实例化几次或者调用几次方法,static代码段都执行一次...比如,你创建了类的两个实例,但是只有创建第一个实例的时候static代码段才被执行.创建第二个的时候将不执行...使用类名调用静态方法也同理

     static代码段可以有多个.但是,效果和整合在一起没什么区别

0 0