1.多态//父类的引用可以用子类的对象
2.抽象类可以防止类被初始化
3.抽象类除了被继承过之外,是没有用途、没有值、没有目的的
4.if (classobject instanceof classname)//检查类型
5.如果不想让某个类被初始化,就以abstract这个关键词将它标记为抽象的
6.抽象类可以带有抽象和非抽象的方法
7.如果类带有抽象的方法,则此类必定标识为抽象的类
8.抽象的方法没有内容,它的声明是以分号结束的
9.抽象的方法必须在具体的类中运行
10.JAVA所有的类都是Object直接或间接的子类
11.方法可以声明Object的参数或返回参数类型
12.不管实际上所引用的对象是什么类型,只有在引用变量的类型就是带有某方法的类型时才能调用该方法
13.Obeject引用的变量在没有类型转换的情况下不能赋值给其它的类型,若堆上的对象类型与所要转换的类型不兼容,则此转换会在执行期产生异常。
14.类型转换的例子:Dog d =(Dog) x.getObejct(aDog);
15.从ArrayList<Object>取出的对象只能被Object引用,不然就要用类型转换来改变
16.Java不允许多重继承,因为那样会有致命方块的问题。
17.接口就好像是100%纯天然抽象类
18.以interface这个关键词取代class来声明接口
19.实现接口时要使用implements这个关键词//例如: Dog implements pet
20.class可以实现多接口
21.实现某接口的类必须实现它所有的方法,因为这些方法都是public与abstract的
23.父类的构造优先于子类的构造
24.局部变量只有在声明它的方法内是使用
25.静态方法无法使用非静态变量
27.final的变量代表你不能改变它的值
28.final的method代表你不能覆盖掉该method
30.静态的方法可以直接调用不要在堆上实例化
31.final staic//常量声明需要在声明的时候初始化
32.a[count++],先取值后++
33.final int i = j,i的值可以随j的值变化而变化,对象不能变但对象的内容是可以变的
34.List<List<type>> list =Lists.partition(list_value, size);
35.JAVA深复制(深克隆)可以使用序列化实现
public static <T> List<T> deepCopy(List<T> beanList) throws IOException, ClassNotFoundException {
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(byteOut);
out.writeObject(beanList);
ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
ObjectInputStream in = new ObjectInputStream(byteIn);
@SuppressWarnings("unchecked")
List<T> dest = (List<T>) in.readObject();
return dest;
}