1. 抽象类中不必定非得有抽象方法,就算没有抽象方法,编译也不会出错。
二、interface 继承 interface 用extends关键字。
三、在泛型中 E 实现一个接口用 extends关键字。
四、枚举类型也能够做为HashMap中的key使用
五、枚举类型也会被编译成class文件。命名格式和内部类相同。也能够被其余类调用,但也须要在前加上类名。
六、在定义多个不定参数的方法时候,不定参数必须在最后一个。
void go(int x, String... y){
}
7. Boolean.valueOf(String s) 该方法忽略大小写。
8. interface中不管是方法仍是属性都默认为public,不能用其余可见性修饰符
9. 泛型中能够用super 如:List<? super String>
10. 直接取对象中的属性的时候 是从定义引用类型对象中取,而非实际的对象类型中取。
11. TreeSet 的subset中全部的操做都会反映到该Treeset中。TreeSet的subset的add方法的数值不能超出subset的范围。
12. 要序列化一个类的对象,该类和其所依赖的类都必须实现序列化接口。 可是若是父类已经实现了序列化接口,子类就无需实现序列化接口了。
1三、 method(int... value) 和method(int x,int y)能够共存。
1四、若是一个类没有定义任何构造器的话,默认会有一个无参构造器;可是当一个类定义了一个有参构造器的时候,并不会自动构造一个无参构造器;这样可能会引发须要无参构造器的子类编译出错。
15.能够在一个Thread的子类的构造方法中启动此线程。
16. try 后面能够不加catch。不过至少得有finally。
17.在反序列化过程当中,将使用该类的公用或受保护的无参数构造方法初始化不可序列化类的字段。可序列化的子类必须可以访问无参数构造方法。可序列化子类的字段将从该流中恢复。 PS、若是超类未实现序列化接口。 那么在反序列化其子类的时候,会调用超类的无参构造器。
18. 在catch Exception时,超类的Exception要放在最后catch 不然会出错。
19. DateFormat 初始化通常用其下的getDateInstance方法。 把date转换成String 用 format方法,反之用parse方法。
20. 在某个类的成员方法内部也能够有一个非匿名的 内部类的声明。 编译后 class文件如 [类名]$1[内部类名]
21. run方法也能够用synchronized 修饰。
22. Arrays.sort(数组) 该数组若是是不一样类的对象组成的 会出ClassCastException
23. public void takeList(List<? extends String> list){ list.add("123")} 出错 改为super 就能够了。
24. 非静态方法,同步用的是对象锁,若是是静态方法,同步是用的类锁。
25. 子类重写父类的方法时,其方法的返回值类型能够是父类该方法返回值类型的子类,而不能是父类。
26. 子类重写父类的静态方法时,不能使用super关键字。。PS:这其实不该该算是override。
27. 在构造中调用其余的构造方法只能用this 关键字。
28. case default 只能写在最后。
29. Arrays 类的 binarySearch(Object[] a, Object key) 使用二分搜索法来搜索指定数组. 调用前必须排序,不然结果不肯定。 若是搜索不到该对象,会返回此值可插入位置的负值-1. 也就是排在此对象前的对象的索引的负值-1.
30.NumberFormat 的 SetMaximumFractionDigits等方法会四舍五入。 git
31. 一个对象的hashcode会被用做索引,此索引方便在相应的容器中快速定位到此对象。 若是有多个对象的hashcode相同,那么至关于一个索引对应多个对象。这样须要再次在这多个对象中线性查找出你想要找到的对象。 数组
32. Console类只有readPassword方法返回的是char[]