Java复习-5
方法
方法是语句的集合,他们在一起执行一个功能
最好一个方法只做一个功能(原子性)
结构
修饰符 返回值类型 方法名 (参数类型 参数名){
方法体
return 返回值
}
方法的调用注意
Java中为什么方法加个static。main方法才能调用static方法?
不是一定要加的,只是你加了之后可以在方法里面直接调用,不需要创建对象;因为main函数是静态方法,所以有一些方法设置为静态是为了方便调用。
注意:1、在静态方法中,不能调用非静态方法及引用非静态变量。但是反过来却没问题。
2、JSR规范强制规定了main()方法的格式必须是: public static void main(String[] args){…}
Java是值传递
方法的重载
重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。
最常用的地方就是构造器的重载。
int add(int num1,int num2){
return num1 + num2;
}
int add(int num1,int num2 ,int num3){
return num1 + num2 + num3;
}
可变参数
//一个方法只能指定一个可变参数,它必须是方法的最后一个参数,任何普通参数都必须在他前面
static int add(int... args) {
int result = 0;
for(int i = 0;i < args.length;i ++) {
result += args[i];
}
return result;
}
递归
自己调用自己
基数要小,否则会卡死
汉诺塔问题:一次只能移动一个盘子;不能把大盘子放在小盘子上;除去盘子在两个柱子之间移动的瞬间,盘子必须都在柱子上。(在这三点要求下把盘子从起始柱子A全部移动到目标柱子C上)
代码如下:
基础情形:n==1的时候终止递归,进行回溯。
public class HanNuoTower {
public void tower(int n,char s,char m,char e)//n个塔从s经过m最终全部移动到e
{
if(n==1)
move(s,e);
else
{
tower(n-1,s,e,m);
move(s,e);
tower(n-1,m,s,e);
}
}
public void move(char s,char e){
System.out.println("move "+s+" to "+e);
}
public static void main(String []args){
HanNuoTower hnt =new HanNuoTower();
hnt.tower(4,'A','B','C');
}
}
tic void main(String []args){
HanNuoTower hnt =new HanNuoTower();
hnt.tower(4,'A','B','C');
}
}