核心类库学习——ArrayList
针对数组不能自动扩容 ,数组刚开始生成的时候大小就确定了,想要在数组中再添加一个元素必须重新构建一个数组,十分麻烦
创建一个ArrayList对象,如果不设置初始容量默认是10
ArrayList内部封装了扩容逻辑,按1.5倍扩容
Debug
debug是为了观察代码内部逻辑结构的调试策略。
(1)先添加断点
(2)以调试模式运行
核心类库学习——Map
无论是数组还是ArrayList查询元素的效率都不高,这就要引入Map,说到底是一种映射关系,一个键值对应一个值。
例:
相关代码:
注:、
异常 ——try catch
语法:
try{
可能发生异常的代码 //没有异常一切照旧,有异常要配合catch语句处理异常
} catch (异常类型 异常变量名) { //捕捉,用来获取异常对象,好让程序恢复正常流程
}
例:
try catch方法能够处理异常的执行流程
main方法不能处理异常的执行流程
如上述情况,一旦执行到异常时,main方法处理不了,一场就会被发送到main方法的上一层,也就是java虚拟机,代码就会结束
异常继承体系:
一种异常如果能向上转型成它的父辈或祖辈异常,那么也可以通过设定他爷爷的参数来捉到他的异常,如下:
一般将Error异常排除在外,因为他的异常比较严重,有时即使捉住也无法处理,比如内存不足异常,所以我们一般捕捉所有异常时用Exception
异常分为两种,运行时异常和编译异常
运行时异常交给上一层处理不需要接任何说明,编译异常需要在可能抛出异常的代码加throws,方便抛给上一层处理,例如:
finally
finally中的代码总是会被执行,无论前面是否抛出异常,如下图:
先执行try里的代码,因为没有异常,所以catch里的代码不会被执行,但finally里的代码一定会被执行。
一般我们资源用完之后就要关闭,防止浪费,关闭的代码一般就写在finally里,因为一般代码出现异常后面的代码就无法执行了,但资源是必须关闭的
finally代码的简化(try-with-resource)