两对整数明明完全一样,为何一个输出true,一个输出false?原因是因为。 

Integer在内部使用了一个私有的静态类IntegerCache,此类内部封装了一个Integer对象的cache数组来缓存Integer对象

IntegerCache内部的代码,会看到它使用静态初始化块在cache数组中保存了[-128,127]区间内的一共256个Integer对象。

         当给Integer变量直接赋整数值时,如果这个数值位于[-128,127]内,JVM(Java Virtual Machine)就直接使用cache中缓存的Integer对象,否则,JVM会重新创建一个Integer对象。

 

二、有关类的继承各个模块执行顺序

经试验,总结如下:

如果初始化一个类时,(1)在定义类时,先执行它继承的静态初始化块,之后执行自己的静态初始化快(2接下来初始化数据按顺序在每个类里先执行初始化块,后执行其他语句(3类的执行顺序则是先父类后子类。

三、使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数。请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?

源代码如下:

 

class Jishulei{

public static int jishu=0;

{

jishu++;

}

void getjishu()

{

System.out.println(jishu);

}

}

public class Lianxi {

public static void main(String args[])

{

Jishulei a=new Jishulei(),b=new Jishulei(),c=new Jishulei();

a.getjishu();

}

 

}

不论在何时,只需调用此类的任意对象的getjishu()即可查询此类创建的对象个数