(这里只写了方法中的一些重点,初学者还是先看教程叭)
1.关于参数
(1)形参和实参
形参:就是方法的参数列表。在方法被调用时接收数据(实参)的。(更像是一份占位符,方法体内通过名字来识别不同的参数)
实参:调用方法时实际传给方法的数据。
(2)可变参数
声明:在方法声明中,在指定参数类型后加一个省略号(…)。
typeName... parameterName
规定:一个方法只有一个可变参数,且位于参数列表最后。
本质:可变参数本质上就是变长数组。
2.Java只有值传递
(1)值传递和引用传递
在C++中,函数传值有两种方式,即值传递和引用传递。
而在Java中,只有值传递,即便传递的对象为引用类型(如String)。
值传递是指在调用函数时将实参复制一份传递到函数中,这样函数中操作的是实参的副本,不会对实参造成修改;
引用传递是指在调用函数时将实参的地址传递到函数中,这样函数中操作的是实参对象,函数内部的修改会影响到实参。
(2)Java中只有值传递
即方法不会对外部数据造成任何影响,只是对它们进行加工然后return一定的东西。
例子和原理见这篇:Java中只有值传递?一篇文章彻底弄懂
3.方法调用的两种方式
(1)当方法返回一个值的时候,方法调用通常被当做一个值
int larger = max(30, 40);
(2) 如果方法返回值是void,方法调用一定是一条语句。
System.out.println(“Hello !”);
4.方法的重载
名字相同但参数不同(个数、类型、顺序)的方法。
只有返回值或者其他不同不能构成重载!!!
5.递归
它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。
A方法调用A方法,在设计递归算法时,一定要指明什么时候自己不调用自己。否则,就是个死循环!
因此,递归结构包括递归头和递归体:
- 递归头:什么时候不调用自身方法。
- 递归体:什么时候需要调用自身方法。
例如:阶乘。
public static int f(int i){
if(i==0){//认为规定
return 1;
}else if(i==1){//递归头
return 1;
}else{
return i*f(i-1);//递归体
}
}