1. 当用 new 新建一个数组的时候, 只是创建了这个数组的一个引用, 数组内的元素实际上是没有创建的

假定 Record是一个类, 有setMessage(String message)方法, 那么, 当执行以下代码时

1 Record[ ] records = new Record[7];
2 records[0].setMessage("something");

会报空指针异常, 因为其为指向任何的元素

可以这样解决

1 Record record = new Record();
2 record.setMessage(message);
3 records[0] = record;

同理, 当创建二维数组的时候也是类似的,

1 Record[][] recordss = new Record[6][];

其创建的也是一个二维数组的引用, 实际上一维数组是空的, 一维数组内的元素也是空的, 所以要使用, 先要创建一维数组,

然后再创建一维数组中的元素,使其有指向的对象之后才能调用其方法.

2.

Calendar类的get(Calendar.MONTH)方法返回的月份数比当前月份数少1, 即其是从0开始计数的而不是从1开始

这点注意

 

3.

取得类文件所以在完整路径

View Code
1 public static String getPath()
2 {
3         String path = Test.class.getResource(".").toString();
4         //所取得的路径前面会加上 file:/
5         return path.substring(6);
6 }

但是这同表示在Eclipse 导出可运行的 jar 包时通常 jar包时不能运行的(解压可以) 解决办法有待研究

4.

Class.forName() 方法 参数字符串, 必须使用全限定名(包含包名).

同时 Class.forName()立即就进行了初始化, 但"ClassName.class"形式的话, 就只是创建了一个引用 而未进行初始化.

如果一个static final值是"编译期常量" 那么这个值不需要对所在类进行初始化就能读取(如果值是随机确定的 则要进行初始化)

如果一个static域不是final的, 那么在对它访问时, 总是要求在它被读取之前, 要先进行链接(分配存储空间)和初始化(初始化该内存空间)

5.