方法和数组
1. 方法
1.1. 方法的定义
修饰符 返回值类型 方法名(参数类型1 参数名1,参数类型2 参数名2){
...
方法体
...
return 返回值;
}
返回值类型:如果没有返回值则写void,return后面可以不加返回值,也可是直接不写return。
参数:可以是一个或多个,也可没有。
1.2. 方法的调用
方法名(实参1,实参2);
int result = sum(2,3); // 可以这样把方法有的返回值赋值给变量
方法的调用时填写的参数,必须与定义时的参数类型和顺序和个数相匹配。
1.3. 方法的重载
同一个类中,相同方法名,不同参数列表(参数类型,个数,顺序不同)的方法叫做重载方法。
public class A{
public int fn(int a,double b){...}
public void fn(int a,double b){...} // 返回类型不同不算重载,看做是重复定义。
public int fn(double a,int b){...} // 只是顺序不同也算重载
public int fn(double a,long b,char c){...} // 个数,类型都不同的重载
}
1.4. 可变参数
适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。
格式:变量类型... 变量名
public int fn(int x, int... args) {
int sum = 0;
for (int i = 0; i < args.length; i++) {
sum += args[i];
}
return sum*x;
}
可变参数的特点:
- 只能出现在参数列表的末尾,一个方法只能有一个可变参数。
- ...位于变量类型和变量名之间,前后有无空格都可以。
- 调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
语义逻辑:
- 因为参数个数不定,所以当其后边还有相同类型参数时,java无法区分传入的参数属于前一个可变参数还是后边的参数,所以只能让可变参数必须位于最后一项。
- 当可变参数个数多余一个时,必将有一个不是最后一项,所以只支持有一个可变参数。
2. 数组
// 声明数组
变量类型[] 数组名; // 常用
变量类型 数组名[]; // 也符合语法,但不常用。
// 创建数组
变量类型[] 数组名 = new 变量类型[数组大小]; // 创建空数组
变量类型[] 数组名 = new 变量类型[]{值1,值2,……}; // 根据值创建数组
变量类型[] 数组名 = {值1,值2,……}; // 根据值创建数组
数组名.length // 获得数组的大小
数组名[index] // 获取数组内对应索引的值,index为0,1,2……
// 多维数组,以二维为例,多维类推
变量类型[][] 数组名 = new 变量类型[外维大小][內维大小];
// 即每个外维元素都是一个內维大小的数组,內维大小给定就每个外维元素都一样大,也可以不写。
// 可以通过给每个外维元素单独赋值来分配不同的內维大小,如:
int[][] arr = new int[2][];
arr[0] = {2,3,4};
arr[1] = {7,0,10,23,5};