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.