数组异常-空指针异常、二维数组、方法

数组异常-空指针异常

在使用变量引用一个数组时,变量必须指向一个有效的数组对象,如果该变量的值为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;
    }
}

内存图解:

 

 

posted on 2018-09-14 16:53  孙崇武  阅读(1370)  评论(0编辑  收藏  举报

导航