请注意,本文编写于 312 天前,最后修改于 299 天前,其中某些信息可能已经过时。
方法/函数
定义
封装一段特定的逻辑功能,主要包含的要素有以下这些:
- 权限修饰符
- 方法名
- 参数列表
- 返回值
优势
- 有利于程序的后期维护【后期修改方法一处就可以,不用处处去修改】
- 提高开发效率,提高代码重用性【一次开发,多次利用】
语法
package zuoye02;
public class fangfa {
//以下为自定义方法:打印1-100之间所有数字
public static void printNum() {
for (int i=1;i<=100;i++) {
System.out.println(i);
}
}
//定义一个方法:打印n-m所有数字
public static void printNum2(int n,int m) {
for (int i=n;i<=m;i++) {
System.out.println(i);
}
}
//以下为入口方法
public static void main(String[] args) {
//方法调用:[数组类型 变量名=]方法名([实际参数列表]);
//调用无参数无返回值的方法
printNum();
//调用有参数的方法:方法名(实际参数列表);
printNum2(10,50);//实际参数的个数、类型、顺序必须与形式参数列表一致
//调用有参数有返回值的方法
double res=getSum(1.5,10.0);
}
}
练习题 用户登录
题目要求:
定义方法:实现用户登陆功能 要求输入用户名:admin 密码:123456
登陆成功,除此之外的情况登陆失败。
public static boolean login(String admin,int pwd){
if ("admin".equals(admin)&&pwd==123456){
return true;
return false;
}
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.println("请输入用户名和密码:");
String name=input.next();
int pwd=input.nextInt();
//调用方法
boolean res=login(name,pwd);
System.out.println("登陆结果:"+res);
}
}
递归
定义
在运行时自己调用自己【不能无限制调用,必须要有出口】
////////////// 如果没有出口,就会变成死递归
递归的出现是为了简化问题:
子问题与原来的问题是同样的问题,但是更为简单
这样说有点抽象,我们可以这样理解:若规定我们来求一个较为复杂的问题,比如求1~10000000的和,我们可以先求1~10000000-1的和,为了求1~10000000-1的和,我们可以先求1~10000000-2的和,如此不断的将问题简化,该问题的本质就与1~1的和并无不同
案例 求1~N的和
我们在这里假设一个函数he(N),意为1~N的和
//入口方法
public static void main(String[] args){
int n;
int res=he(n);
res=(n-1)+n;//例如he(4)+5;
}
//1-n之和的方法
public static int he(int n){
if(n==1){//递归出口
return 1;
}
return he(n-1)+n;
}
方法的重载
若两个方法名称相同,但是参数(个数、顺序、类型)不一致 ,我们可以认为一个方法是另一个方法的重载
只有方法的返回值不同的时候可以构成重载
参数的值传递与引用传递
值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。
引用传递是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。