# java方法
## 1.方法的定义
1. 什么是java方法:
Java方法是语句的集合,他们在一起执行某功能,一般情况下:
方法是解决一类问题的步骤的有序组合;方法包含于类或者对象中;方法在程序中被创建,在其他地方被引用
2. 设计方法的原则:一个方法只完成一个功能,这样有利于我们后期拓展
3. 方法的命名规则:首字母小写,驼峰原则
## 2.方法的重载
方法的重载:方法名可以一样,但是方法的参数不可以一样,调用方法时可以更具参数类型选择不同的同名方法,这就是方法的重载
方法重载原则:
1.方法名称必须相同
2.参数列表必须不同(个数不同、或者类型不同、或者顺序不同)
3.返回值类型可以相同也可以不同
4.仅仅返回类型不同不能成为方法的重载
```java
package method;
//方法的重载:方法名可以一样,但是方法的参数不可以一样,调用方法时可以更具参数类型选择不同的同名方法,这就是方法的重载
/*
方法重载原则:
1.方法名称必须相同
2.参数列表必须不同(个数不同、或者类型不同、或者顺序不同)
3.返回值类型可以相同也可以不同
4.仅仅返回类型不同不能成为方法的重载
*/
public class Demo03 {
public static void main(String[] args) {
System.out.println(max(2.5,3.6));
System.out.println(max(2,3));
}
public static int max(int a,int b){//比大小的方法
int m=0;
if(a==b){
System.out.println("两数相等");
return 0;//return还有终止方法的作用,一旦执行此语句,方法就会终止,所以上下会有两个return并不矛盾,这里return后面只要是int类型就行
}
if(a>b){
m=a;
}else
{
m=b;
}
return m;
}
public static double max(double a,double b){//比大小的方法
double m=0;
if(a==b){
System.out.println("两数相等");
return 0;
}
if(a>b){
m=a;
}else
{
m=b;
}
return m;
}
}
```
## 3.可变参数
(1.格式 :
数据类型 ... 参数名
(2.注意:
1.一个方法中只能有一个可变参数
2.可变参数一定要在普通参数后面,要放在参数列表末尾
```java
package method;
//可变参数
/*
格式 :
数据类型 ... 参数名
注意:1.一个方法中只能有一个可变参数
2.可变参数一定要在普通参数后面,要放在参数列表末尾
*/
public class Demo04
{
public static void main(String[] args) {
Demo04 demo04=new Demo04();//因为底下的方法没有使用static修饰,所以必须创建一个类的对象来调用该类的函数
demo04.test(1,1,2,3,4);
printMax();
System.out.println("最大的数为"+printMax(1,3,4,6,8,5,9,10,8));
}
public void test(double a, int ...i){//a为普通参数,i为可变参数
System.out.println(a);
System.out.println(i[0]);
System.out.println(i[1]);
System.out.println(i[2]);
System.out.println(i[3]);
}
public static int printMax(int ...i){//选出最大的参数
if(i.length==0){//获取参数个数
System.out.println("没有参数");
return 0;}
int result=i[0];
for(int a=1;a<i.length;a++){//遍历参数列表,从中找到最大的
if (result < i[a]) {
result=i[a];
}
}
return result;
}
}
```
## 4.递归(重难点)
1.什么是递归:递归就是自己调用自己,A方法调用A方法
2.递归的作用:递归可以用简答的程序来解决复杂的问题,可以将一个大问题层层转换成一个规模较小的问题解决。需要多次重复计算,大大减少代码量。递归的能力就在于用有限的语句定义对象的无限集合。
3.递归结构包含两部分:
递归头:什么时候不调用自身方法,如果没有头,将陷入死循环。
递归体:什么时候需要调用自身方法
4.递归阶段:
边界:程序直到边界就会停止循环,一步一步返回值
前阶段:只要没到达边界,就会一直不停调用自身
返回阶段:从第一个开始慢慢返回
5.递归层数太多会导致电脑无法正常处理
6.递归的主要目的是提供一种思维
```java
package method;
//递归(重点)
/*
1.什么是递归:递归就是自己调用自己,A方法调用A方法
2.递归的作用:递归可以用简答的程序来解决复杂的问题,可以将一个大问题层层转换成一个规模较小的问题解决。需要多次重复计算,大大减少代码量。递归的能力就在于用有限的语句定义对象的无限集合。
3.递归结构包含两部分:
递归头:什么时候不调用自身方法,如果没有头,将陷入死循环。
递归体:什么时候需要调用自身方法
4.递归阶段:
边界:程序直到边界就会停止循环,一步一步返回值
前阶段:只要没到达边界,就会一直不停调用自身
返回阶段:从第一个开始慢慢返回
5.递归层数太多会导致电脑无法正常处理
*/
public class Demo05 {
public static void main(String[] args) {
System.out.println(test(5));
}
public static int test(int a) {
if (a < 0) {
System.out.println("负数没有阶乘");
return 0;
} else if (a > 0) {
if (a == 1) {
return 1;
} else {
//这里就用到了递归,比如若果是a=5,那就会如此执行,test(5)=5*test(4),test(4)=4*test(3)...直到test(2)=2*test(1),test(1)=1,最后都返回成为5*4*3*2*1
return a * test(a - 1);//
}
}
return 0;
}
}
```