二维数组
数组中嵌套数组就是二维数组
- 二维数组的声明
数据类型[][] 数组名;
数据类型 数组名[][]; - 初始化:
动态初始化:
数据类型[][] 数组名 = new 数据类型[一维的长度][二维的长度];
每一个第二维的小数组长度相同
数据类型[][] 数组名 = new 数据类型[一维的长度][];
第二维的每一个小数组的长度可以不同,第二维的小数组还没有创建
每个数组 arr[外层数组索引]=new 数据类型[长度] |…一维数组创建方式 - 静态初始化:
数据类型[][] 数组名 = new 数据类型[][]{{1,2},{1},{1,2,3}…};
数据类型[][] 数组名 = {{1,2},{1},{1,2,3}…}; - 二维数组的遍历:
双重for循环嵌套
Arrays 操作数组的工具类
- 学习jdk类的方式:
1.类是干嘛的,有什么作用
2.构造器
3.功能(方法)
jdk的API:说明手册,能够有效帮助我们学习java中的类。 - 常用的操作数组的方法
1.static void sort(int[] a);对指定的 int 型数组按数字升序进行排序。
2.static String toString(int[] a);返回指定数组内容的字符串表示形式。
3.static int binarySearch(int[] a, int key);使用二分搜索法来搜索指定的 int 型数组,以获得指定的值。
4.static void fill(boolean[] a, boolean val);将指定的 boolean 值分配给指定 boolean 型数组的每个元素。
5.static void fill(boolean[] a, int fromIndex, int toIndex, boolean val);将指定的 boolean 值分配给指定 boolean 型数组指定范围中的每个元素。toIndex位置取不到。
6.static int[] copyOf(int[] original, int newLength);复制指定的数组,截取或用 0 填充(如有必要),以使副本具有指定的长度。
7.static int[] copyOfRange(int[] original, int from, int to) ;to结束位置不包含。
8.static boolean equals(double[] a, double[] a2);如果两个指定的 double 型数组彼此相等,则返回 true。
9.static boolean deepEquals(Object[] a1, Object[] a2);如果两个指定数组彼此是深层相等 的,则返回 true。
10.static String deepToString(Object[] a) ;返回指定数组“深层内容”的字符串表示形式。
异常
异常:程序生病了
Throwable
/1 \2
Error Exception
/ 1 \2
CheckedException RuntimeException
-
Error:这类错误一般是虚拟机生产的,程序员无法控制,不需要管
-
Exception:
检查时异常|编译时异常 CheckedException:如果遇到,必须进行处理,否则程序无法运行,发生在编译期。
运行时异常 RuntimeException:程序运行才知道是否有异常,增强程序的健壮性处理(if…else)。 -
常见的一些运行时异常:
1.空指针异常NullPointerException
2.数组下标越界 ArrayIndexOutOfBoundsException
3.负数异常 NegativeArraySizeException
4.数学异常 ArithmeticException
5.字符串索引越界异常 StringIndexOutOfBoundsException
throw :制造异常
如果需要在程序中自行抛出异常,应使用throw语句,throw语句可以单独使用,throw语句抛出的不是异常类,而是一个异常实例,而且每次只能抛出一个异常实例。
- throw语句的语法格式如下:
throw new ClassNotFoundException();
- 异常处理方式:
1.抛出异常: throws 把异常抛到上一层
2.捕获异常:
try{
可能会出现异常的代码
}catch(ClassNotFoundException e){ //= new ClassNotFoundException();
如果出现ClassNotFoundException类型的异常,执行这里的代码....
}catch(NullPointerException e){
如果出现NullPointerException异常,执行这里的代码
}...
catch(Exception e){
接收除了以上的其他的异常,执行这里的代码
}finally{
无论try中的代码是否出现异常,finally中这里的内容一定会执行
}
- 注意:
1.try后面可以接一个到多个catch,捕获不同类型的异常。
2.把大范围的catch写在最后,小范围写在前面,否则永远执行不到。
3.如果try中一旦出现异常,try中的后面的代码都不会执行,执行对应catch中的代码。
4.如果存在方法的重写, 子类重写方法抛出的异常<=父类的方法抛出的异常。
自定义异常:
除了java提供的异常类以外,可以自定义异常。
学习异常的方式:
- 了解异常分类有什么,各自的特点。
- 异常处理 ***
编译时异常:1)throws 2)try…catch
运行时异常:1)增强程序健壮性 2)throws 3)try…catch - 自定义异常,使用。