1.异常
1.1异常体系:Throwable
/ \
Error Exception
/ \
RuntimeException CheckedException
Error:虚拟机生成并且脱出的(我们管不了)
RE:运行时异常 ------通过增强程序健壮性的代码if处理
CE:编译时异常-------检查时异常|编译时异常-----只可以通过异常处理方案处理,如果不处理则无法运行
注意:如果一旦遇到异常不去处理就会导致程序无法继续向下执行
1.2常见的运行异常
1.空指针异常 NullPointerException
2.数组索引越界异常 ArrayIndexOutOfBoundsException
字符串索引越界异常 StringIndexOutOfBoundsException
索引越界异常 IndexOutOfBoundsException
3.数学异常 ArithmeticException
4.类型转换异常 ClassCastException
5.数字转格式异常 NumberFormatException
1.3异常处理方案
(1)异常抛出 throws
把异常抛出到上一层处理
(2)异常捕获
try {
有可能出现异常的代码段;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (NullPointerException e) {
e.printStackTrace();
} ...
catch (Exception e) { --> 接盘侠
e.printStackTrace(); }
finally{
一般为资源的关闭等等
}
如果try中的代码出现异常---直接停下来当前的代码---执行catch中的代码进行代码异常捕获
从上到下的判断catch,哪一个当前的catch可以捕获当前异常对象,就执行该catch
一个try后面可以跟着1~n个catch
从上到下:catch的类型范围从小到大
finally:无论try中是否遇到异常最后都会执行finally中的代码
1.4自定义异常
自定义异常都会直接或者间接的继承自Exception
直接继承Exception的是编译时异常CE
继承RuntimeException的为运行时异常
throw制造异常
2.数组
2.1作用:存储多个数据
2.1定义:相同数据类型数据的集合
2.2数组:
一段连续的内存空间
多个相同数据类型的有序集合
特点:
引用数据类型
是定长的,长度一旦确定不可改变
存储的多个数据类型相同
有序的,有索引
索引:连续的内存空间每一个小空间的符号
从0开始,每次加一
每个数组的第一个空间索引:0
每个数组的最后一个空间索引:数组名.length-1
操作数组中的数据:
根据索引操作
数组名[索引]
数组的定义语法:
声明:
数据类型[] 数组名
数据类型:根据存储的数据的类型
初始化:第一次赋值
动态初始化:先创建数组,后附值
数据类型[] 数据名 = new 数据类型[长度]
数组只创建不赋值,只附默认值
静态初始化:创建数组同时赋值
数据类型[] 数据名 = new 数据类型[]{};
遍历:
普通for循环
增强for循环
二维数组:
数组中数组
动态初始化:
静态初始化:
数据类型[][] 数组名 = new 数据类型[][]{{},{}};
数据类型[][] 数组名 = {{},{}};
数据类型[] 数组名[] = new 数据类型[][]{{},{}};