尊龙凯时网址

java方法的调用以及方法参数传递、方法的递归调用 -尊龙凯时网址

2023-08-17,,

1、方法的定义:

​ 访问修饰符 返回值类型 方法名 ([参数列表]){

​ 方法体

}

如果方法体中需要一些未知的数据作为执行条件,那么这些数据可以作为参数。

如果方法需要返回数据,在定义有返回值的方法时需要明确返回值类型

方法调用的两种方式:

1、对象名.方法名(参数)

2、直接写方法名调用,但必须是static修饰的

//获取这个字符串的第一个字符
public static char method1(string str){
return str.charat(0);//获取字符串的第一个字符
}
//方式一:调用方法
对象名.method1();
//方式二:调用静态方法(static修饰的)
string s="abc";
char c=method1(s)//s将赋值给方法的形参str,那么方法执行时str有值
//c就是方法调用后的返回值

1、方法的参数是基本数据类型,它传递的是值

//计算一个数的平方
public static int pow(int a){
a=a 2;//6
return a*a;//6*6=36
}
public static void main(string[] args){
int num=4;
int sum=pow(num);//num是实参 num赋值给a
system,out,println(num);//4
system.out.println(sum);//36
}

2、方法的参数是引用数据类型,它传递的是地址(string类型除外)

//参数 是数组类型
public static int pow(int[] arr){
arr[0]=arr[0] 2;//根据地址 改变数组的第一个元素值arr[0]=4;
return arr[0]*arr[0];//4*4
}

调用

//调用另一个pow
int[] array={2,3};
int sum2=pow(array);//array中存放数组的地址,将地址赋值给arr 形参
system.out.println(array[0]);//4
system.out.println(sum2);//16

方法的重载:

​ 在一个类中,存在相同方法名的两个及以上的方法,且他们的参数列表不同(参数类型不同,参数个数不同,参数顺序不同),不考虑参数名,不考虑返回值类型

​ 一个类中不能存在完全相同的方法,他们是重复的方法jvm编译不通过

例如:

public int add(int a,int b){
return a b;
}
public int add(long a,long b){
return (int)(a b);
}
//与前两个 不重载
public void add(int c,int d){ }
//能与 方法1,2构成重载
public void add(int a){ }
//能与 方法1,2构成重载
public void add(int a,long b){ }
//能与 方法1,2构成重载
public void add(long a,int b){ }

把握;方法名是否相同,同时参数列表是否相同(参数个数不同 或者参数类型不同或者参数顺序不同)

在一个方法中可以调用其它的方法,它们的执行流程


/**
* 程序入口
* @param args
*/
public static void main(string[] args) {
system.out.println("这里是main方法的开始");
method1();
system.out.println("这是main方法的结束");
}
// 在一个方法中可以调用另一个方法, 它们的执行顺序是这样的
public static void method1(){
system.out.println("这是method1 的开始语句块 ");
// 调用method2
method2();
system.out.println("这是method1的 结束语句块");
}
public static void method2(){
system.out.println("这是method2 的开始语句块 ");
// 调用method3
method3();
system.out.println("这是method2 的结束语句块"); } public static void method3(){
system.out.println("这是method3的执行语句块");
}

1、定义

​ 在一个方法中,运用方法自身调用,这样的调用称为方法的递归调用,为了避免出现方法调用时出现死循环,递归调用中必须定义方法结束调用的条件。

方法递归调用执行流程

public static void m3(int i){
if(i==5){
return ;
}
system.out.println("这是m3方法开始i :" i);
i ;
m3(i);
system.out.println("m3方法的结束 i:" i );
}
public static void main(string[] args) { m3(0); //
}

练习1 : 使用递归计算一个数的阶乘

​ n =5 = 5! = 5*4的阶乘

​ f(n) = n* f(n-1) = (n-1)*f(n-1-1)

public static int f(int n ){
if(n==1){
return 1;
}
int s = n*f(n-1);
system.out.println("结束 --" s);
return s;
}
// n =5 n=4 n=3 n=2 n=1 return 1
// s = 5*f(4) s=4* f(3) s= 3* f(2) s=2*f(1)
// s=5*24 s=4* 6 s=3* 2= 6 s=2
// s = 120

java方法的调用以及方法参数传递、方法的递归调用的相关教程结束。

网站地图