数组异常-空指针异常、二维数组、方法
数组异常-空指针异常
在使用变量引用一个数组时,变量必须指向一个有效的数组对象,如果该变量的值为null,
则意味着没有指向任何数组,此时通过该变量访问数组的元素会出现空指针异常
int [] arr = new int[4]; System.out.println(arr[0]); arr = null; System.out.println(arr[0]);//空指针异常
/*D:\workspase\20180914>javac DEMO1.java D:\workspase\20180914>java DEMO1 0 Exception in thread "main" java.lang.NullPointerException at DEMO1.main(DEMO1.java:8) */
二维数组:
三种定义方式:
第一种:
int[][] arr = new int[3][4];
第二种:
int[][] arr = new int[3][];(了解即可)
第三种:
int[][] arr = {{1,2},{3,4,5,6},{7,8,9}};
二维数组的访问:
/*int[][] arrt = new int[3][4];
System.out.println(arrt[0][1]);//0
System.out.println(arrt[1]);//地址
System.out.println(arrt);//地址*/
二维数组的内存图:
二维数组的遍历:
循环嵌套
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
arr[i][j];
}
};
举个例子:(累加求和)
int[][] arrt = {{1,2,3},{2,2,3},{2222,1}}; System.out.println(arrt[0][1]); System.out.println(arrt[2][1]); System.out.println(arrt[1][1]); //遍历二维数组 int sum1 = 0; int sum2 = 0; for(int i = 0;i < arrt.length;i++){ for(int j = 0;j < arrt[i].length;j++){ sum1 = sum1 + arrt[i][j]; } sum2 = sum2 + sum1; //分组和 System.out.println(sum1); //清零 sum1 = 0; } //总和 System.out.println(sum2);
方法:
在Java中,声明一个方法的具体语法格式如下:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,......){
执行语句
………
return 返回值;
}
对于上面的语法格式中具体说明如下:
⦁ 修饰符:方法的修饰符比较多,有对访问权限进行限定的,有静态修饰符static,还有最终修饰符final等,这些修饰符在后面的学习过程中会逐步介绍public
⦁ 返回值类型:用于限定方法返回值的数据类型void
⦁ 参数类型:用于限定调用方法时传入参数的数据类型
⦁ 参数名:是一个变量,用于接收调用方法时传入的数据
⦁ return关键字:用于结束方法以及返回方法指定类型的值(1,结束 2.返回方法指定类型的值给调用者)
⦁ 返回值:被return语句返回的值,该值会返回给调用者
需要特别注意的是,方法中的“参数类型 参数名1,参数类型 参数名2”被称作参数列表,它用于描述方法在被调用时需要接收的参数,如果方法不需要接收任何参数,则参数列表为空,即()内不写任何内容。方法的返回值必须为方法声明的返回值类型,如果方法中没有返回值,返回值类型要声明为void,此时,方法中return语句可以省略。
举个例子:
class DEMO2 { public static void main(String[] args) { double a = getArea(2);//(2)实参 System.out.println(a); int b = 2; getChang(b,3);//(b,3)实参:变量,常量都行; /*D:\workspase\20180914>javac DEMO2.java D:\workspase\20180914>java DEMO2 12.566370614359172 长方形的面积为:6*/ } //求圆的面积 public static double getArea(double r){//(double r)为形参 double area = r*r*Math.PI; //因为返回值为double,需要写return; return area; } //求长方形的面积 public static void getChang(int a,int b){//(int a,int b)为形参 int area = a*b; System.out.println("长方形的面积为:"+area);//因为返回值是void,不能写return; } }
内存图解: