java数组空指针一场_数组异常-空指针异常、二维数组、方法

数组异常-空指针异常

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

二维数组的内存图:

ac9469dc44f50124ce5ac3eaced21a0b.png

二维数组的遍历:

循环嵌套

for(int i=0;i

for(int j=0;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语句可以省略。

举个例子:

classDEMO2

{public static voidmain(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;

returnarea;

}//求长方形的面积

public static void getChang(int a,int b){//(int a,int b)为形参

int area = a*b;

System.out.println("长方形的面积为:"+area);//因为返回值是void,不能写return;

}

}

内存图解:

c2f13153653d0bdd1c9f027d2f2d7b7a.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值