一.泛型
1.泛型可以避免类型的强制转换,有一定的优良性能,java可以定义泛型方法,类和接口。
2.在定义一个泛型时用尖括号扩住一个字母,之后使用泛型时,根据传入的类型可以确定类和接口只能传入什么样的参数
关于泛型的参数,如果类和接口传入了实际参数,类里的所有使用参数的地方均会被替换,如果木有传入实际参数,则会被当作Object处理
3.为了表示各种父类,可以使用通配符”?“,它的元素类型可以是任何类型,当不知道传入的类型是什么类型时,可以使用通配符,使用后传入的实际参数可以是任何类型。
4.泛型其实就是参数类型化,通过实际参数给形式参数,限制类,方法,接口的参数类型,具有一定的良好性能,防止了系统进行强制转化。
5.在定义类的子类时,如果父类是泛型类,那么派生子类时父类一定要传入参数。
6.一旦定义看了泛型构造器,那么调用构造器时,java会自动的推断类型形参的类型,而且程序员也可以显示的为构造器中的类型制定实参类型
7.通配符可以设定上限,也可以设定下限,上限用?extend T T为?实际参数的父类,设定下限时用?super T , T为实际参数的子类。
或者类型相同。
8.java 8 改进了类型推断,他可以根据上下文来推断烈性参数的目标类型,有额可以在方法链中,将推断得到的类型参数传递到最后一个方法
二.异常处理
1.java通过try catch finally throw throws来处理异常
2.异常处理是保证程序健壮的前提,也是一个程序好坏的评价标准
3.try块中是可能出现异常的代码块,如果产生了异常对象,则会把异常交给java,java收到异常处理时,他会找到粗粝异常的catch块来处理产生的异常如果java找不到处理异常的代码块,则运行环境将会终止,java也将退出。
4.java提供了非常丰富的异常类,有异常(Exception)和错误(Error)两种,他们都继承了Throwable父类。错误是无法捕获的,无法恢复,他们将导致系统中断。这是不能用catch捕获,用无需再其声明方法中抛出。
5.处理异常时应该先处理小异常,再处理大异常,即就是先处理异常的子类,再处理父类异常。
6.try块是必须有的,catch和finally是可以选择的,但是必须有catch和final的其中之一,除非在catch中执行了虚拟机的退出,否则finally块中的代码一定会执行
7.不要咋finally中用return和throw语句,一旦使用了则try和catch中的return和throw将会失效。
8.在进行异常处理的嵌套时,被套的部分无论放在哪一块都可以,根据程序的实现来进行嵌套。
9.java 7 可以自动关闭资源,可以不接catch和finally块
10.java的异常分为两大类,check异常和Runtime异常,java必须显示处理java异常
11.当哪一级调用的程序都不知道怎么处理该异常,则要用throws跑出该异常,throws要声明在方法签名中。也可以自行抛出异常用throw,throw抛出的不是一个异常类,而是一个异常实例,而且没词只能抛出一个异常实例。
12.尽量不要使用异常处理,能自己解决的,就不要用异常处理,使用异常处理会降低程序执行的效率,只有在不知道怎么处理异常时才使用异常处理
同时,也不要使用过于庞大的try块,尽量避免使用catchall语句