24、System.gc()用于强制进行终结操作(在写程序的时候这么做可以加速调试的过程)。
25、java尽力保证所有变量在使用前都能得到恰当的初始化。对于定义于方法内部的局部变量,java以编译时错误的形式来贯彻这种保证;对于类的数据成员(即字段)中的基本类型保证都会有一个初始值;对于在类里定义一个对象引用时,如果不将其初始化,此引用就会获得一个特殊的值null(这是java的关键字)。另外,可用构造器来进行初始化,但却无法阻止自动初始化的进行,它将在构造器被调用之前发生。甚至,它发生于定义时指定变量之前(如:inti=7;i将先被赋值于0,然后赋予7。)(这对于所有基本类型和对象引用都适用)。
26、在类的内部,变量定义的先后顺序决定了初始化的顺序。即使变量定义散布于方法定义之间,他们仍旧会在任何方法(包括构造器)被调用之前得到初始化。
27、决定初始化顺序的另一标准:先从静态对象(如果它们尚未因前面的对象创建过程或调用而被初始化),而后是非静态对象。
28、pulic类的静态变量会在程序运行一开始就被初始化,一个类的某一静态对象被调用(从而被初始化)会导致该类所有的静态变量被初始化。{待进一步证实}。
29、编译器不允许指定数组的大小,int[]a;实际上只是定义了一个对数组的引用,a没有任何储存空间,为了给数组分配空间,必须对数组写初始化表达式,初始化动作可以出现在代码的任何位置。有一种特殊的初始化表达式,它必须出现在创建数组的地方----int[]a={1,2,3,4,5};
30、所有数组,无论它们的元素是对象还是基本类型,都有一个固定成员length,如a.length就代表了数组a的元素个数。
31、new虽然不能用来创建单个基本类型数据,但可以创建一系列基本类型数据,即当不能确定在数组里需要多少个元素时,可以借用new来实现。
32.、如果数组的元素不是基本类型(显然数组的创建必须用new来实现),那么每个元素都是一个引用。
33、Integer[]a=newInteger[20];经历此语句后的a还只是一个一用数组,并且直到通过创建新的Integer对象,并把对象赋值给引用,初始化进程才算结束:a[i]=newInteger[200];如果忘记了创建对象,并且试图使用数组中的空引用,就会在运行时产生异常。对象创建后,a[i]==200,即a[i]表示该引用指向的对象的长度,但不能说a[i].length==200(实际上这句话不能通过编译),因为a[i]不是一个数组的引用。