2021-10-21 集訓補題
阿新 • • 發佈:2021-10-21
Java 方法
什麼是方法
方法是什麼?
- System.out.println()是什麼?
- System是一個類,out是一個物件,println是方法
- 方法是語句的集合,一起執行一個功能
- 方法是解決一類問題的步驟的有序集合
- 方法包含於類和物件中
- 方法在程式中建立,在其他地方被引用
- 設計原則:
- 方法要有原子性,一個方法儘可能完成一個功能
public class Demon01 { //main方法 public static void main(String[] args) { System.out.println(add(3,5)); } //加法 public static int add(int a, int b){ return a+b; } }
方法的定義和呼叫
方法的定義
- java的方法即其他語言的函式。
- 方法包含一個方法頭和方法體,下面是全部部分:
- 修飾符:static等
- 返回值型別
- 方法名:遵守駝峰命名
- 引數型別:引數是佔位符,傳遞的值是實參,形參只是用於佔位的。
- 方法體
- 返回值
方法的呼叫
- 呼叫方法:物件名.方法名(實參列表)
- Java支援兩種呼叫:
- 有返回值直接當成一個值使用
- 無返回值就當成一個語句使用
- 值傳遞(Java沒有指標操作)和引用傳遞
public class Demon02 { public static void main(String[] args) { int res = max(10, 20); System.out.println(res); } public static int max(int a, int b){ int res = -1; if(a>=b) res = a; else res = b; return res; } }
方法的過載
- 過載:
- 在同一個類中,有同名但是不同引數/引數型別的方法
- 過載的規則:
- 方法名稱必須相同
- 引數列表必須不同(引數型別,引數個數)
- 方法返回型別可以相同也可以不同
- 僅僅返回型別不同不足以過載
public class Demon02 { public static void main(String[] args) { int res = max(10, 20); System.out.println(res); } public static int max(int a, int b){ int res = -1; if(a>=b) res = a; else res = b; return res; } //方法過載 public static double max(double a, double b){ double res = -1; if(a>=b) res = a; else res = b; return res; } }
命令列傳遞引數
- 有時候希望執行一個程式再傳遞給他訊息,要依靠傳遞命令列引數給main()函式實現
- 需要編譯後用命令列執行傳參
public class Demon03 {
public static void main(String[] args) {
//args.length
for(int i=0;i<args.length;i++){
System.out.println("args["+ i +"]:" + args[i]);
}
}
}
可變引數
- 在方法宣告中,在指定引數型別後加一個省略號(...)
- 一個方法中只能指定一個可變引數
- 可變長引數只能在引數表中最後一個引數
public class Demon04 {
public static void main(String[] args) {
Demon04 demon04 = new Demon04();
demon04.test(1,2,3,4,5);
}
public void test(int... i){
System.out.println(i);
}
}
遞迴講解
- 遞迴就是方法本身呼叫方法自己。
- 利用遞迴可以用簡單的程式來解決一些複雜的問題。
- 遞迴包括兩個部分:
- 遞迴頭:遞迴什麼時候開始
- 遞迴尾:遞迴什麼時候結束
- 遞迴的實現是通過棧實現的,過深會造成巨大開銷
public class Demon05 {
public static void main(String[] args) {
fun(5);
}
public static int fun(int n){
if(n==1){
return 1;
}else{
return fun(n-1)*n;
}
}
}