今天学习了方法的重载,方法的重载就是在同一个类中,方法名一样但是形参列表不同的方法。
形参列表不同就是指形参的个数不同,数据类型不同。注意和形参顺序以及名字无关。
例如:
public class index {
public void show(){}
public void show(int count){
System.out.println(count);
}
public void show(int count,double sum){
System.out.println(count);
System.out.println(sum);
}
}
上面的代码就是对方法的重载,注意传入的实参数据类型要和形参一致。
其实也没啥说的,这里注意一个细节,例如:
public class index {
public static void main(String[] args) {
char[] c = {'a','s','f'};
System.out.println(c);
//输出结果为acf
}
}
这里为什么不是地址值呢,我们知道数组其实就是在堆空间中new出来了一个对应的存放该数据类型的空间那么为什么不是空间的地址值呢,这是因为在源码中对print进行了不同数据类型的重写,在Java中,System.out.println方法被设计成可以接受多种类型的参数,并且根据参数的类型进行适当的处理。当你传递一个char[]数组给System.out.println时,它实际上会遍历这个数组并打印出每个字符,而不是打印数组的内存地址。这是因为println方法对char[]参数进行了特别处理,它会将char[]作为字符序列打印出来,如下就是源码的重写。
这里还有一个可变形参变量的使用,简单说一下,直接看代码:
public class index {
public static void main(String[] args) {
index x = new index();
x.ass(123456789);
//结果为123456789
}
public void ass(int...sum) {
for (int i = 0; i < sum.length; i++) {
System.out.print(sum[i]);
}
}
}
其实就是传入的实参就是数组,可以使用数组的相关操作。但是注意的是在传入形参时,如果有多个形参,并且其中一个要使用可变参数时,要放到最后,不然就不可以识别后面的参数,导致错误。
递归方法
递归方法分为:直接递归和间接递归。
直接递归就是自己调用自己。间接递归可以理解为A方法调用B方法,B方法调用C方法,C方法调用A方法。我们在使用递归方法时一定要往已知方向递归,否则这种递归就变成了无穷递归,停不下来,类似于死循环。最终发生栈内存溢出。
例如:
public class index {
public static void main(String[] args) {
index x = new index();
int ass = x.ass(10);
System.out.println(ass);
}
public int ass(int n){
if (n == 1){
return 1;
}else {
return ass(n - 1) * n ;
}
}
}
上面的代码就是n的阶乘,注意一定要往已知方向递归