java面试题(1):

最近准备面一家新的公司。总结了一下之前的java面试题,具体内容如下,大家共同学习。

class A{

  static int id0;  //静态成员变量id0;

  int  id1 ;    //非静态成员变量id1

  //静态代码块

  static{

  }

  //构造代码块

  {

  }

  //静态方法

  static void xxx(){

  }

  //非静态方法

  void xxxxx(){

  }

  //构造函数

  public A(){

  ....

  }  

}

对于一个java类,类加载的时候,首先是将字节码文件加载进入JVM虚拟机中去。静态代码块是在类加载的时候就进行初始化调用了,静态成员变量在加载的时候也是对所有的字段进行赋默认值。

public class SingleTon{

  private static SingleTon singleTon = new SingleTon();

  private static int count1 ;

  private static int count2= 0 ;

  private SingleTon(){

  count1++;

  count2++;

  }

  public static SingleTon getInstance(){

    return singleTon;

  }

}

1.加载到虚拟机的时候,第一阶段是对静态成员变量赋默认值

-----------------------------------------

  singleTon = null;

  count1=0;

  count2=0;

2.静态代码块和静态成员变量的赋值操作,整个执行过程从上到下执行

--------------------------------------------------------------------------------------------

  private static SingleTon singleTon = new SingleTon();

  上面这句话分为两个动作:1.static {  singleTon = new SingleTon();

    }

  [singleTon=new SingleTon();]

  count1=1;//调用了构造函数,所以count1=1;

  count2=1;//同样的调用了构造函数,所以count2=1

  [count2=0]

  count2=0;

最后返回值为1,0

  

猜你喜欢

转载自www.cnblogs.com/stone-learning/p/9257296.html