两对整数明明完全一样,为何一个输出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()即可查询此类创建的对象个数
浙公网安备 33010602011771号