方法和数组
1.方法
概念:使用{}完成特定功能的代码块
1.1 有返回值的方法定义格式
修饰符 (static) 返回值类型 方法名 (参数类型 参数名....){
代码
return 结果;
}
实际参数: 具体在参与运算的实际值(方法调用时属于的参数)
形式参数:在方法中传递的参数(调用的方法中需要输入的参数)
定义方法的时候,两个明确
1.明确返回值类型
2.明确参数的个数以及类型
方法调用:赋值调用
定义方法的注意事项:
1)方法和方法是平级关系,方法中不能再定义方法
2)调用时,实际参数不需要携带数据类型了
并且,形式参数必须携带数据类型,否则报错
3)方法不调用,不执行,如果调用,采用赋值调用
2.2 没有返回值的方法
修饰符 (static) void 方法名(参数列表){
代码
}
// eg
public void NoReturn(..){...}
方法调用: 单独调用
//没有返回值的方法
public public void NOReturn(...){
....
}
public static void main(String[] args){
//直接调用
NoReturn(...)
}
方法重载
方法名相同,参数别表不同,与返回值类型无关
参数列表不同包括:参数个数不同,参数类型不同
// 这种情况也是方法重载
public void Nihao(String s,int a) {}
public void Nihao(int a,String s) {}
2. 数组
概念: 可以存储多个元素的容器
2.1 数组定义的格式
数据类型[] 数组名称 ;
eg: int [] arr 定义了一个int类型的数组,数组的名称是arr
数据类型 数组名称 [] ;
eg: int arr [] 定义了一个int类型的 arr数组
2.2 数组定义的三种方式
// 第一种方式,数组的动态初始化,具体数组中的元素值由系统默认给定,数组的长度由开发者定义
int [] arr1 = new int [3];
arr1[0] = 1;
.....
// 第二种方式,数组的静态初始化 具体的元素值由开发者给定, 长度系统默认给定
int [] arr2 = new int[] {1,2,3};
// 第三种方式:静态初始化的简写
int [] arr3 = {1,2,3};
2.3 数组中常见的两个异常
1. 数组角标越界 原因:访问了不存在的数组中的角标
java.lang.ArrayIndexOutOfBoundsException :属于运行时期异常
解决方法: 排查具体原因,看是哪一行角标越界
2. 空指针异常 原因: 当一个对象的引用不存在了,然后还需要使用对象完成一些特定的功能
java.lang.NullPointerException 运行时期异常
解决方案:
对当前的对象进行非空判断
if(对象名称!=null){
使用对象完成特定的功能
}
2.4 面试题
数组中有没有lenth()? 没有,只有lenth属性,获取数组的长度,数组中的最大索引值:length-1
String类种有没有lenth() 有,获取字符串的长度
集合种有没有length? 没有,获取集合长度使用size()方法
3.二维数组
概念:由多个一维数组组成的数组
3.1 二维数组的定义格式
数据类型 [] [] 数组名称;
数据类型 [] 数组名称 [];
3.2 二维数组的定义方式
// 1.动态初始化,当前二维数组种由三个一维数组,每一个一维数组中有两个元素
int [][] arr4 = new int [3][2];
arr4[1][0] = 10;//给第一个一维数组的第一个元素赋值为10
// 2.静态初始化的两种方式
int [][] arr5 = new int [][] {{1,2},{2,3},{3,4}};
int [][] arr6 = {{1,2},{2,3},{3,4}};
arr6.length; //获取的是二维数组的长度即里面包含多少个一维数组
arr6[0].length; //获取的是二维数组中第一个数组的长度