本节学习目标:
掌握方法的主要作用以及基础定义语法;
掌握方法参数传递与处理结果返回;
掌握方法重载的使用以及相关限制;
掌握方法递归调用操作;
5.1 方法基本定义
方法(method,在很多语言中被成为函数)指的数一段可以被重复调用的代码,利用方法可以实现庞大程序的拆分,是一种代码重用的技术手段,并且更加适合于代码维护。
在程序开发种经常会遇见各种重复的代码定义,为了方便管理这些代码,就可以通过方法结构保存这些重复的代码,实现可重复调用。方法定义格式:
public static 返回值类型 方法名称(参数类型 参数变量,...) {
方法体;
return 返回值;
}
在进行方法定义时本处使用了static关键字,之所以这样定义是因为在当前阶段,我们定义的方法需要定义在主类之中,并且由主方法直接调用。在后续阶段的开发过程中是否使用static害需要根据具体的情况分析,在第七节的面向对象中我们将详细讲解static关键字。
方法定义中的返回值与传递的参数的数据类型均为Java中定义的数据类型(基本数据类型、引用数据类型),在方法中可以进行返回数据的处理,如果需要返回数据可以使用return语句来描述,return所返回的数据类型与方法定义的返回值类型相同,如果不需要返回数据,则该方法可以用void进行声明。实例:定义一个无参数接收无返回值的方法。
public class JavaDemo {
public static void main(String[] args) {
printInfo(); //方法调用
}
/**
* 定义一个无参接收无返回值的方法
*/
public static void printInfo() {
System.out.println("这是一个方法");
}
}
程序执行结果:
这是一个方法
同样的,我们继续定义一个有参有返回值的方法 。
public class JavaDemo {
public static void main(String[] args) {
int sum = add(2,3); //调用方法并接收返回值
System.out.println(sum);
}
/**
* 定义一个有参有返回值的方法
*/
public static int add(int a , int b) {
return a+b;
}
}
程序运行结果:
5
在方法中return语句除了可以返回处理结果外,还可以结合分支语句实现方法的结束调用。
5.2 方法重载
方法重载是是采用技术形式实现方法名称可重用设计的一种手段。
方法重载的方法名称进行重用的一种技术形式,其最主要的特点为“方法名称相同,参数类型或个数不同”,在调用时根据传递的参数类型和个数不同执行不同的方法体。
就比如一个方法名称是用来执行加法的,但是我们可能需要2个整数相加、或者2个小数相加、或者3个整数相加等,这个时候就需要对这个方法名定义多个方法体,此时就需要方法重载。
实例:
public class JavaDemo {
public static void main(String[] args) {
System.out.println(sum(2,3)); //调用2个int参数的方法
System.out.println(sum(2,3,4)); //调用3个int参数的方法
System.out.println(sum(2.1,3.2)); //调用2个double参数的方法
}
/**
* 定义一个计算2个整数和的方法
*/
public static int sum(int x , int y) {
return x+y;
}
/**
* 定义一个计算3个整数和的方法
*/
public static int sum(int x , int y , int z) {
return x+y+z;
}
/**
* 定义一个计算2个小数和的方法
*/
public static double sum(double x , double y) {
return x+y;
}
}
程序运行结果“:
5
9
5.300000000000001
在方法重载时考虑到标准性一般都建议统一返回值类型。
5.3 方法递归调用
递归调用是一种特殊的方法嵌套调用形式,可以利用递归调用实现更为复杂的计算。
递归调用是一种特殊的调用形式,指的是方法自己调用自己的形式,但是在进行递归操作的时候必须满足以下条件:
递归调用必须有结束条件;
每次调用的时候都需要根据需求改变传递的参数内容;
在应用层项目开发上一般很少见递归调用,因为递归调用处理不当很容易出现内存溢出的问题。
实例:利用递归实现1~100的数字累加
public class JavaDemo {
public static void main(String[] args) {
System.out.println(sum(100)); //1~100,限制范围
}
/**
* 定义一个累加的方法
*/
public static int sum(int num){
if (num == 1) { //结束递归
return 1; //最后一次递归返回1
}
return num + sum(num - 1); //通过递归累加
}
}
本节关于方法的学习到这里就结束啦,编程语言的学习永远需要自己多去动手写代码,多加练习才是提升代码能力的最快途径。我们下一节再见啦~