方法的重载
-
重载就是在一个类中,又想同的函数名称,但形参不同的函数
即,一个类中有两个同名的方法,但这两个类的“返回值类型”、“形参类型”、“形参个数”不同,而在程序中调用哪一个方法,取决于实参个数、实参类型与被赋值的变量的类型 -
方法的重载的规则:
- 方法名称必须相同(否则就是不一样的方法)
- 参数列表必须不相同(个数、或类型、或参数)
- 返回值类型可以相同也可以不相同
- 仅仅返回类型不同不足以成为方法的承载
-
实现理论:
方法名相同时,编译器会根据调用方法的参数个数、参数类型等去诸葛匹配,以选择对应的方法,如果匹配失败,则编译器报错 -
可变参数(不定项参数):
- java支持传递同类型的可变参数给同一个方法
- 在声明方法时,在指定参数类型后加一个省略号“...”
- 在一个方法中只能指定一个可变参数,它必须是方法中最后一个被声明的参数,任何普通参数的声明必须在他之前,如:
public void test(int... i)或者public void test(int j, int s, int... i),public void test(int... i,int j)这样就是错误形式
public void test(int... i),声明过后,在调用函数时,对i的赋值就可以是多个值,并且,传递的参数必须都是同一个类型
such as:
public class Student{
Student Stu = new Student();//定义一个对象
Stu.test(i:1,2,3,4,5);
}
public void test(int... i){//方法test
System.out.println(i);//系统输出i的名称
System.out.println(i[0]);//所有赋给i的值里排序第一的值
System.out.println(i[1]);//所有赋给i的值里排序第二的值
System.out.println(i[2]);//所有赋给i的值里排序第三的值
System.out.println(i[3]);//所有赋给i的值里排序第四的值
System.out.println(i[4]);//所有赋给i的值里排序第五的值,这样的表现形式,其实就是数组的特征
}
调用方法:
- printMax(number:1,2,3,4,5);
或 - printMax(new double[]{1,2,3,4,5});
递归
方法调用其本身,即方法A调用方法A,这与调用函数一样,需要申请空间,大规模数据时会出现溢栈的情况,但同时,利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。
递归结构包括两个部分:
- 递归头:什么时候停止调用自己。如果没有头,将陷入死循环
- 递归体:什么时候需要调用自己
(小计算使用递归,对电脑内存占用太多,100的阶乘就会使电脑奔溃
计算器)