找工作进行了一个多月了,还是没拿到一个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 stub
System.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 stub
myclas.staicExampeFunction();//这个之前会调用static代码块
System.out.println("下面会有输出吗?");
myclas myvar1=new myclas();
System.out.println("下面会有输出吗?");
myclas myvar2=new myclas();
}
结果:
staic fregement
staicExampeFunction
下面会有输出吗?
下面会有输出吗?
总结:无论实例化几次或者调用几次方法,static代码段都执行一次...比如,你创建了类的两个实例,但是只有创建第一个实例的时候static代码段才被执行.创建第二个的时候将不执行...使用类名调用静态方法也同理
static代码段可以有多个.但是,效果和整合在一起没什么区别