方法的声明及使用
一. 方法的定义
方法的定义在Java中可以使用多种格式,方法暂时使用如下格式进行定义。
【方法的定义格式】
public static 返回值 方法名(类型 参数1,参数2,,,,){
程序语句;
[return 表达式];
}
注意:如果不需要传递参数到方法中,只要将括号写出来,不必填入内容。如果方法没有返回值,在我在返回值类型明确写出void。
【定义一个方法,在主方法中进行调用】
public class MethodDemo01{
public static void main(String args[]){
printInfo() ; // 调用printInfo()方法
printInfo() ; // 调用printInfo()方法
printInfo() ; // 调用printInfo()方法
System.out.println("Hello World!!!") ;
}
public static void printInfo(){
char c[] = {'H','e','l','l',
'o',',','L','X','H'} ; // 定义字符数组
for(int x=0;x<c.length;x++){ // 循环输出
System.out.print(c[x]) ;
}
System.out.println("") ; // 换行
}
};
程序运行结果为:
Hello,LXH
Hello,LXH
Hello,LXH
Hello World!!!
调用printlnfo()方法时,程序就会跳到printlnfo()方法中执行,当printlnfo()方法全部执行之后就会返回调用处向下继续执行。
方法命名规范要求:在定义类时,全部单词的首字母必须大写,那么在定义方法时也有命名规范要求,即在第一个单词的首字母小写,之后每个单词的首字母大写,如println()方法。希望读者在日后的开发中一定要根据此命名要求进行方法的声明。
【有返回值的方法】
public class MethoDemo02{
public static void main(String args[]){
int one = addOne(10,20) ; // 调用整型的加法操作
float two = addTwo(10.3f,13.3f) ; // 调用浮点数的加法操作
System.out.println("addOne的计算结果:" + one) ;
System.out.println("addTwo的计算结果:" + two) ;
}
// 定义方法,完成两个数字的相加操作,方法返回一个int型数据
public static int addOne(int x,int y){
int temp = 0 ; // 方法中的参数,是局部变量
temp = x + y ; // 执行加法计算
return temp ; // 返回计算结果
}
// 定义方法,完成两个数字的相加操作,方法的返回值是一个float型数据
public static float addTwo(float x,float y){
float temp = 0 ; // 方法中的参数,是局部变量
temp = x + y ; // 执行加法操作
return temp ; // 返回计算结果
}
};
运行结果为:
addOne的计算结果:30
addTwo的计算结果:23.6
二. 方法的重载
从MethoDemo02的代码可以看出,同样的加法操作应该统一为add()方法才对。所谓的方法重载就是方法的名称相同,但参数的类型和参数的个数不同。通过传递参数扥个数及类型的不同,可以进行完成不同的操作。
【验证方法的重载】
public class MethoDemo03{
public static void main(String args[]){
int one = add(10,20) ; // 调用整型的加法操作
float two = add(10.3f,13.3f) ; // 调用浮点数的加法操作
int three = add(10,20,30) ; // 调用有三个参数的加法操作
System.out.println("add(int x,int y)的计算结果:" + one) ;
System.out.println("add(float x,float y)的计算结果:" + two) ;
System.out.println("(int x,int y,int z)的计算结果:" + three) ;
}
// 定义方法,完成两个数字的相加操作,方法返回一个int型数据
public static int add(int x,int y){
int temp = 0 ; // 方法中的参数,是局部变量
temp = x + y ; // 执行加法计算
return temp ; // 返回计算结果
}
public static int add(int x,int y,int z){
int temp = 0 ; // 方法中的参数,是局部变量
temp = x + y + z ; // 执行加法计算
return temp ; // 返回计算结果
}
// 定义方法,完成两个数字的相加操作,方法的返回值是一个float型数据
public static float add(float x,float y){
float temp = 0 ; // 方法中的参数,是局部变量
temp = x + y ; // 执行加法操作
return temp ; // 返回计算结果
}
};
运行结果:
add(int x,int y)的计算结果:30
add(float x,float y)的计算结果:23.6
(int x,int y,int z)的计算结果:60
从程序可以看出add()方法被重载了3次而且每次重载时的参数类型或个数都有不同,所以在调用时,会根据参数的类型和个数自动进行区分。
注意:方法的重载一定只是在参数上的类型或个数有所不同。
三. 使用return结束一个方法
在Java的方法定义中,可以使用return语句直接结束一个方法的执行。
【使用return结束方法】
public class MethoDemo05{
public static void main(String args[]){
System.out.println("1、调用fun()方法之前。") ;
fun(10) ;
System.out.println("2、调用fun()方法之后。") ;
}
public static void fun(int x){
System.out.println("3、进入fun()方法。") ;
if(x==10){
return ; // 结束方法,返回被调用处
}
System.out.println("4、正常执行完fun()方法。") ;
}
};
运行结果为:
1、调用fun()方法之前。
3、进入fun()方法。
2、调用fun()方法之后。
从程序运行结果发现,虽然在return中没有返回任何的内容,但是一旦执行到了return语句之后,方法将不再执行,而返回到被调用处据需向下执行。
四. 方法的递归调用
递归调用时一种特殊的调用形式,属于方法的自身调用:
递归调用
【递归调用】
public class MethoDemo06{
public static void main(String args[]){
System.out.println("计算结果:" + sum(100)) ; // 调用操作
}
public static int sum(int num){ // 定义方法用于求和操作
if(num==1){ // 判断是否是加到了最后一个数
return 1 ;
}else{
return num + sum(num-1) ; // 递归调用
}
}
};
运行结果:
计算结果:5050
上面程序完成了递归方法的调用,就相当于sum(100)+sum(33)+….sum(1),从程序的sum()方法中可以发现,递归调用时必须用一个明确的结束条件,然后不断改变传入的数据,才可以实现递归调用。
注意:尽量避免使用递归调用。如果处理不好,有可能出现内存的溢出。