Java複習-5
阿新 • • 發佈:2021-02-02
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');
}
}