方法学习
定义和调用
-
定义(method):为了解决功能代码重复编写的问题,被封装起来的可以解决某一功能的代码///完成某一特定功能且可以重复使用的代码块
-
语法格式:[修饰符] 返回值类型 方法名称(方法参数列表(参数类型 参数名1,参数类型 参数名2,…)){
方法体;
[return 返回值;]
}
- void为无返回值,写了void的话就不用了return
- 方法名称:用于调用方法,遵循标识符规范,使用动词
- 形式参数:圆括号中的变量,可以有多个
- 方法体:编写如何完成该功能的代码
- return:1.方法返回值给到调用者,void的时候不用,2.结束当前方法
- 注意:1.方法必须定义在类中2.一个类中可以额有多个方法3.方法之间是平行的,不能在方法中定义另一个方法4.方法的定义没有先后顺序
//求两个数的和
public static int getSum(int a,int b){
return a + b;//再把控制权交给调用处
}
方法调用时传入的参数为实际参数,简称实参
方法定义的参数称为形式参数,简称形参,起到占位的作用,形参的名字可以随意取,但是要见名知意
在方法中声明的变量为局部变量,只能在方法内使用
方法调用时,把实参的值复制一份给形参,这个过程叫做值传递
方法可以嵌套调用,但是不能够嵌套定义.
设计方法
//定义一个方法,打印制定行数的指定字符串
//输入的值:行数/字符串
public static void getStr(int line,String str){
for (int i = 0;i < line;i++){
System.out.println();
}
return;//可以省略
}
//按照指定格式打印int类型数组
//输入的值 int[]arr
public static void(int[] array){
String message = "[";
for(int i = 0;i < array.length;i++){
message += array[i];
if (i == array.length - 1){
message += "]";
} else {
message += ",";
}
}
System.out.println(message);
}
//需求3:定义一个方法,传入一个int数组
//返回指定元素在数组中第一次出现的索引
//输入的值:int[]array,int key
//产出的值:int
public static int indexOf(int[] array[i],int key){
int index = -1;
for (int i = 0;i < array.length;i++){
if (key == array[i];i++){
index = i;
break;
}
}
return index;
}
方法的可变参数
1.可变参数只是一个语法糖,本质上是一个数组,也就是说,在方法中,可以把这个可变参数作为数组使用
2.可变参数可以直接传入数组
3.可变参数必须写到参数列表的最后一个,一个方法最多只能有一个可变参数
方法重载
在一个类中,多个方法名称相同,但参数列表不同的多个方法构成方法重载(overload)
参数列表不同的三种情况:
1.参数个数不同
2.参数类型不同
3.顺序不同
方法重载和参数名称无关,和返回值也无关
值传递
方法在调用时,把实参复制一份给形参的过程,java方法调用采用值传递
1.基本数据类型的值传递,复制的是值
2.引用数据类型的值传递,复制的是地址
递归recursive
方法自身可以调用自身
方法自身调用自身的现象叫做递归