首先对于方法的最大的好处是可以进行重复调用,但是至于说哪些操作要形成方法,这些都要根据你的实际项目经验总结的。
方法的基本定义
限制条件:
本次的方法指的是在主类中定义,并且由主方法直接调用的方法形式
方法指的就是一段可以呗重复调用的方法块。在java中,如果想要进行方法的定义,则可以进行如下的方法完成
public static 方法返回值 方法名称([参数类型 变量,......]){
方法体代码;
[return[返回值];]
}
在定义方法的时候对于方法的返回值有以下的两类
void:没有返回值;
数据类型(基本类型、引用类型)表示具体的返回值
eg:定义一个没有返回值,没有参数的方法
public static void main(String args[]){
print();}//主方法里,直接调用方法
public static void print(){
system.out.println("hello!");
}(大爷行行好给点钱,给完你就走了)
eg:定义一个有参数,无返回值的方法
public static void main(String args[]){
print("hello");
}//主方法里,直接调用方法
public static void print(String mag){
system.out.println(msg);
}//msg相当于变量
eg:定义一个有参数,有返回值的方法
public static void main(String args[]){
int result=add(10,20);
system.out.println(result);
}
public static int add(int x,int y){
return x+y;
}//用add这个方法计算结果 返回值给了result 因为方法add是用int类型所以result也会用int型接收
既然方法有返回值,那么这些返回值也可以直接输出
system.out.println(add(10,20));]
在定义方法的时候有一点特别需要注意。
如果某一个方法上使用了void定义(无返回值),
那么该方法中可以直接用return来结束调用。//一般与if语句连用
方法重载:方法名相同,参数的类型或个数不同
比如说 小明帮忙去买饭
一般来说都是给小明钱买饭
可是我今天没现金
或许我给的是微信红包
也可以是欠条
也可以是iPhone x
最终小明都会帮我买饭
这个例子就是来说明:传入的参数不同选择不同的处理形式最终实现相同功能
eg:实现方法重载
public static void main(String args[])
{
System.out.println(add(10,20));
System.out,println(add(10,20,30));
System.out.println(add(10.1,20.2));
}
public static int add(int x, int y){
return x+y;
}
public static int add(int x,int y,int z){
return x+y+z;
}
public static double add(double x, double y){
return x+y;
}
结果:30 60 30.2999999999999999997
结论 各自根据参数的类型或个数执行不同的方法体,这就是方法的重载。
但是,程序的对的但是有一点设计不好。
回到买饭的事情上。不管是纸币还是转账等。返回的应该是实物。
类型应该是相同的。
方法参数的方法的返回结果应该是能接受的
在进行方法的重载的时候有一个重要的原则:要求方法的返回值类型一定要相同。
方法递归调用
一般如果要进行方法的递归操作往往都具备有以下特点:
1.方法必须有一个递归的结束条件
2.方法在每次递归处理的时候一定要做出一些变更
eg:实现一个1到100的累加操作
public static void main(String args[]){
system.out.println(sum(100));
}
public static in sum(int num)
{
if(num==1){//结束条件
return 1;
}
return num+sum(num-1);//sum(num-1)为改变条件
}
/*
[main()调用]第一次执行sum()方法:return 100+sum(100-1);
[sum()递归]第二次执行sum()方法: return 99+sum (99-1);
[sum()递归]第三次执行sum()方法: return 98+sum(98-1);
[sum()递归]倒数第二次执行sum()方法:return 2+sum(2-1);
[sum()递归]倒数第一次执行sum()方法:return 1;
(我个人觉得理解递归就是如果是本题的话
sum(100-1)就相当于i--,因为sum(99),sum是一个方法 只要不是sum(1),就没有返回结果 作用就是做到了自减)
如果想用递归计算阶乘只需要在上面的方法定义的int 改为double以防止超过int的最大值
并且return num+sum(num-1)的加号改成乘号
即可 num也可以改成mul 来更好的表达乘法
使用while语句也可以用递归来表示