二维数组:
数组中嵌套数组就是二维数组
二维数组的声明
数据类型[][] 数组名; --推荐
数据类型 数组名[][];
初始化:
动态:
数据类型[][] 数组名 = new 数据类型[一维的长度][二维的长度];--每一个第二位的小数组长度相同
数据类型[][] 数组名 = new 数据类型[一维的长度][];--第二位的每一个小数组的长度可以不同,第 二位的小数组还没有创建
每个数组 arr[外层数组索引]=new 数据类型[长度] |...一维数组创建方式
静态:
数据类型[][] 数组名 = new 数据类型[][]{{1,2},{1},{1,2,3}...};
数据类型[][] 数组名 = {{1,2},{1},{1,2,3}...};
二维数组的遍历:
双重for循环嵌套
实例:
public class TwiceArray {
public static void main(String[] args) {
//二维数组定义
//动态方法
//1.确定长度:
int[][] a=new int[2][3];
a[0][0]=2;
a[0][1]=3;
a[0][2]=5;
a[1][0]=4;
a[1][1]=6;
a[1][2]=7;
for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++){
System.out.println(a[i][j]);
}
}
System.out.print("-------------");
//2.先定义外围,不确定内部,后赋值
int[][] b=new int[2][];
b[0]=new int[3];
b[1]=new int[2];
b[0][0]=2;
b[0][1]=3;
b[0][2]=5;
b[1][0]=4;
b[1][1]=6;
for(int i=0;i<b.length;i++){
for(int j=0;j<b[i].length;j++){
System.out.println(b[i][j]);
}
}
System.out.print("---------------");
//静态方法
//1.带new,能直接确定式数组
int[][] c=new int[][]{{3,3},{9,5,8},{2,9}};
for(int[] i:c){
for(int j=0;j<i.length;j++){
System.out.println(i[j]);
}
}
System.out.println("-------------------");
int[][] d={{2,3},{3,8,6},{9,12}};
for(int[] i:d){
for(int j:i){
System.out.print(j);
}
}
for(int[] i:d){
int num=100;
for(int j=0;j<i.length;j++){
i[j]+=100;
num++;
}
}
}
}
异常:程序生病了
Throwable
/ \
Error Exception
/ \
CheckedException RuntimeException
Error:这类错误一般是虚拟机生产或脱出的,程序员无法控制,不需要管
Exception:
检查时异常|编译时异常 CheckedException:如果遇到,必须进行处理,否则程序无法运行,发生在编译 期
运行时异常 RuntimeException:程序运行才知道是否有异常 增强程序的健壮性处理 if..
常见的一些运行时异常:
1.空指针异常NullPointerException
2.数组下标越界 ArrayIndexOutOfBoundsException
3.负数异常 NegativeArraySizeException
4.数学异常 ArithmeticException
5.字符串索引越界异常 StringIndexOutOfBoundsException
throw :制造异常
异常处理方式:
抛出异常: throws 把异常抛到上一层
捕获异常:
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中的代码