什么是方法
Java语言中的“方法”(Method)在其他语言当中也可能被称为“函数”(Function)。
在java中为了使一些逻辑复杂的代码可以重复使用,并且做到随时随地任意使用时,那么就可将这些代码放在大括号中,并且取名。需要使用的时候直接通过名字调用。
方法存在的优点
- 使用程序结构变得清晰,简短
- 有利于后期的维护
- 提高代码的可用性
- 提高开发代码的效率
方法的定义
修饰符 static 返回值类型 方法名(参数类型 参数名){
//代码块
return 返回值
}
修饰符:可以写可以不写,不写默认为公共的(public),定义了该方法的访问类型。
***static***:可选,使用了static关键字,在同一个类中调用方法不需要构建,直接使用 "方法(参数类型 参数)" 就行,不在同一个类中使用 "类名.方法名()" 就可以使用,未使用static关键字时,不管在不在同一个类中都需要构建该类通过 "类名.方法名()" 使用;
返回值类型:方法可能会返回值。return Value Type 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,return Value Type 是关键字void。
参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参 数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。参数分为两种:
形式参数:在方法调用时用于接收参数
实参:调用方法时实际参数
代码块:方法体包含的具体语句,定义方法的功能
【注意】 程序遇到return时会结束该方法。
/**
*返回两个整型变量数据的较大值
* 参数命名也许规范,请勿模仿
*/
public static int max(int a, int b) {
if(a==b){
System.out.println("两数相等")
return 0;
}
if(a>b){
System.out.println("a大于b")
return a;
}else{
System.out.println("b"大于a)
return b;
}
}
方法的调用
方法的调用:类名.方法名(参数);
如果有返回值我们需要定义一个相同类型的变量来接受,列入:publlic static int add(int a,int b){},返回值是int类型,所以我们需要定义一个int类型变量接受,int message=add(1,2); 通过输出语句将message输出。反之返回值为void的时候就不需要定义直接使用方法就可以了。
代码演示:
public static void main(String[] args) {
int i = 5;
int j = 2;
int k = max(i, j);
System.out.println( i + " 和 " + j + " 比较,最大值是:" + k);
}
/**
*返回两个整型变量数据的较大值
* 参数命名也许规范,请勿模仿
*/
public static int max(int a, int b) {
if(a==b){
System.out.println("两数相等")
return a;
}
if(a>b){
System.out.println("a大于b")
return a;
}else{
System.out.println("b"大于a)
return b;
}
}
方法的重载
重载的规则:
- 方法名相同
- 参数不同(参数类型不同或者个数不同)
【注意】:当方法的方法名相同,参数相同,但返回值类型不同的时候,这不构成重载。
public static double max(double num1, double num2) {
if (num1 > num2){
return num1;
}else{
return num2;
}
}
public static int max(int num1, int num2) {
int result;
if (num1 > num2){
return num1;
}else{
return num2;
}
}
可变参数
声明:
public void add(int... num){//可变参数
//代码块
}
在方法声明中,在指定参数类型后加一个省略号(...) ,在方法中只能指定一个可变参数,它的可变参数必须时方法的最后一个参数,所有的普通参都必须声明在它前面。
递归的概念
递归就是 A方法调用A方法,递归的思想就是"自己调用自己"。在使用递归时我们需要在什么时候停止调用自己,否则就会出现循环。
递归的作用
利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原 问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计 算,大大地减少了程序的代码量。
递归主要分为两个部分:
递归头:声明时候不调用自己的方法,如果没有递归头将陷入死循环,也就是递归的结束条件
递归体:什么时候需要调用自身方法,自己调用自己完成操作。
代码演示
//使用递归计算出5的乘阶
public static void main(String [] args){
System.out.println(f(5));
}
public static int f (int num){
if(num == 1){
return 1;
}else{
return num*f(num - 1);
}
}